{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 线性回归简介\n",
    "\n",
    "线性回归是一种用于预测和建模的基本机器学习算法。它通过建立输入特征与输出变量之间的线性关系来进行预测。\n",
    "\n",
    "#### 1. 基本概念\n",
    "\n",
    "- **目标**: 预测一个连续的数值（例如房价、温度等）。\n",
    "- **模型形式**: 线性回归模型的基本形式为：\n",
    "  \n",
    "  $$ y = \\beta_0 + \\beta_1 x_1 + \\beta_2 x_2 + \\ldots + \\beta_n x_n + \\epsilon $$\n",
    "\n",
    "  其中：\n",
    "  - $ y $ 是预测值（因变量）。\n",
    "  - $x_1, x_2, \\ldots, x_n$ 是输入特征（自变量）。\n",
    "  - $\\beta_0$ 是截距项。\n",
    "  - $\\beta_1, \\beta_2, \\ldots, \\beta_n$ 是特征的权重（系数）。\n",
    "  - $\\epsilon$ 是误差项。\n",
    "\n",
    "#### 2. 线性回归的类型\n",
    "\n",
    "- **简单线性回归**: 只有一个特征（自变量）。\n",
    "  \n",
    "  $$ y = \\beta_0 + \\beta_1 x + \\epsilon $$\n",
    "\n",
    "- **多元线性回归**: 有多个特征（自变量）。\n",
    "\n",
    "#### 3. 训练过程\n",
    "\n",
    "- **损失函数**: 通常使用均方误差（MSE）作为损失函数，用于评估模型的预测性能：\n",
    "\n",
    "  $$ MSE = \\frac{1}{n} \\sum_{i=1}^{n} (y_i - \\hat{y}_i)^2 $$\n",
    "\n",
    "  其中，$y_i$ 是真实值，$\\hat{y}_i$ 是预测值。\n",
    "\n",
    "- **优化方法**: 通过最小化损失函数来优化模型参数（如使用梯度下降法）。\n",
    "\n",
    "#### 4. 优点与缺点\n",
    "\n",
    "- **优点**:\n",
    "  - 简单易懂，易于实现和解释。\n",
    "  - 计算效率高，适用于大规模数据集。\n",
    "\n",
    "- **缺点**:\n",
    "  - 对线性关系的假设，无法处理复杂的非线性关系。\n",
    "  - 对异常值敏感，可能影响模型的性能。\n",
    "\n",
    "#### 5. 应用场景\n",
    "\n",
    "- 房价预测\n",
    "- 销售额预测\n",
    "- 经济指标分析\n",
    "\n",
    "### 总结\n",
    "\n",
    "线性回归是机器学习中一种基础而重要的算法，适用于许多实际问题。虽然它有一些局限性，但在许多情况下，仍然是一个有效的预测工具。"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T16:49:48.947108Z",
     "start_time": "2025-04-17T16:49:48.026132Z"
    }
   },
   "source": [
    "# pip install sklearn\n",
    "# pip install numpy\n",
    "# pip install matplotlib\n",
    "\n",
    "from sklearn.linear_model import LinearRegression\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ],
   "outputs": [],
   "execution_count": 3
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据集介绍\n",
    "+ Automobile - https://archive.ics.uci.edu/dataset/10/automobile\n",
    "\n",
    "该数据集包含三类实体：(a) 汽车各项特性的规格说明，(b) 其指定的​​保险风险评级，(c) 与其他汽车相比，其标准化使用损失。第二个评级对应于汽车风险高于其价格的程度。汽车最初会被分配一个与其价格相关的风险因子符号。然后，如果汽车风险较高（或较低），则通过上调（或下调）该符号来调整。精算师将此过程称为“符号化”。+3 表示汽车风险较高，-3 表示汽车可能相当安全。\n",
    "\n",
    "第三个因子是每辆投保车辆每年的相对平均损失赔付。该值针对特定尺寸类别（双门小型车、旅行车、运动型/特种车等）内的所有汽车进行了标准化，代表每辆车每年的平均损失。\n",
    "\n",
    "\n",
    "| Attribute                | Attribute Range                                  |\n",
    "|--------------------------|--------------------------------------------------|\n",
    "| 1. symboling             | -3, -2, -1, 0, 1, 2, 3.(风险指数)|\n",
    "| 2. normalized-losses     | continuous from 65 to 256.(每年的相对平均损失赔付)|\n",
    "| 3. make                  | alfa-romero, audi, bmw, chevrolet, dodge, honda, isuzu, jaguar, mazda, mercedes-benz, mercury, mitsubishi, nissan, peugeot, renault, saab, subaru, toyota, volkswagen, volvoplymouth, porsche(汽车品牌)|\n",
    "| 4. fuel-type             | diesel, gas.(发动机类型)|\n",
    "| 5. aspiration            | std, turbo.                                      |\n",
    "| 6. num-of-doors          | four, two.                                       |\n",
    "| 7. body-style            | hardtop, wagon, sedan, hatchback, convertible.   |\n",
    "| 8. drive-wheels          | 4wd, fwd, rwd.                                   |\n",
    "| 9. engine-location       | front, rear.                                     |\n",
    "| 10. wheel-base           | continuous from 86.6 to 120.9.                   |\n",
    "| 11. length               | continuous from 141.1 to 208.1.                  |\n",
    "| 12. width                | continuous from 60.3 to 72.3.                    |\n",
    "| 13. height               | continuous from 47.8 to 59.8.                    |\n",
    "| 14. curb-weight          | continuous from 1488 to 4066.(整备质量)|\n",
    "| 15. engine-type          | dohc, dohcv, l, ohc, ohcf, ohcv, rotor.          |\n",
    "| 16. num-of-cylinders     | eight, five, four, six, three, twelve, two.      |\n",
    "| 17. engine-size          | continuous from 61 to 326.(发动机大小)|\n",
    "| 18. fuel-system          | 1bbl, 2bbl, 4bbl, idi, mfi, mpfi, spdi, spfi.    |\n",
    "| 19. bore                 | continuous from 2.54 to 3.94.                     |\n",
    "| 20. stroke               | continuous from 2.07 to 4.17.(冲程)|\n",
    "| 21. compression-ratio    | continuous from 7 to 23.(压缩比)|\n",
    "| 22. horsepower           | continuous from 48 to 288.(马力)|\n",
    "| 23. peak-rpm             | continuous from 4150 to 6600.(峰值转速)|\n",
    "| 24. city-mpg             | continuous from 13 to 49.(城市每加仑英里数)|\n",
    "| 25. highway-mpg          | continuous from 16 to 54.(高速每加仑英里数)|\n",
    "| 26. price                | continuous from 5118 to 45400.(售价)|"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T16:49:52.046617Z",
     "start_time": "2025-04-17T16:49:51.929566Z"
    }
   },
   "source": [
    "data = np.genfromtxt('datasets/automobile/imports-85.csv', delimiter=',')\n",
    "\n",
    "# 使用布尔索引过滤 NaN 值\n",
    "mask = ~np.isnan(data[:, 16]) & ~np.isnan(data[:, 25])\n",
    "\n",
    "# 提取有效的 x_data 和 y_data\n",
    "x_data = data[mask, 16]\n",
    "y_data = data[mask, 25]\n",
    "\n",
    "plt.scatter(x=x_data, y=y_data)\n",
    "plt.show()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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Pl2Ki4v92mzevFm6d+8uqamp0r59e1myZMll57Jw4UJp3bq11KxZU3r37i3bt28P/dMDQJgl7xWNttHXm8ZoyTuQaEIKcpo3by7z5s2TnTt3yieffCK33HKLDBkyRPbu3Wv2T506Vd566y1ZtWqVbNmyRb799lsZOnSo9/tLSkpMgHPx4kXZunWrLF261AQws2bN8rbJzc01bW6++WbJycmRKVOmyP333y/vvPOOt82KFStk2rRpMnv2bNm1a5d07dpVBg4cKMeOHXPmqgBAkJJ3VTbQieWSdyARRbwKeUZGhjz11FPyy1/+Uq644gpZvny5+Vrt379frr76asnOzpY+ffqYrM8dd9xhgp8mTZqYNosXL5aHH35YvvvuO0lJSTFfr127Vj777DPve4wYMUIKCgpk/fr1ZlszN9ddd50899xzZru0tFRatGghDz74oDzyyCO2z51VyAGEi3lygOixe/8Ou7pKszKasTl79qzpttLszqVLl6R///7eNh06dJCWLVt6gxx97ty5szfAUZqBmTBhgskGXXvttaaN7zGsNprRUZoF0veaOXOmd39ycrL5Hv3eQIqKiszD9yIBgJtL3oFEFnKQs2fPHhPU6PgbHXezevVq6dixo+la0kxM/fr1/dprQJOfn2++1mffAMfab+0L1EYDkvPnz8vJkydNgFVeG80cBTJ37lyZM2dOqB8ZAOK25B1IZCFXV1111VUmoPn4449NBmbUqFGyb98+iQea/dHUlvU4cuRItE8JAADESiZHszVa8aR69OghO3bskAULFsjw4cNNV5KOnfHN5mh1VWZmpvlan8tWQVnVV75tylZk6bb2udWqVUuqVatmHuW1sY5REa3W0gcAAHC/iOfJ0UG/Os5FA54aNWrIxo0bvfsOHDhgSsa1e0vps3Z3+VZBbdiwwQQw2uVltfE9htXGOoYGWfpevm30HHTbagMAAFA91O6eQYMGmcHEp0+fNpVUOqeNlnfrKOexY8ea0m6tuNLARaudNPDQQcdqwIABJpgZOXKkzJ8/34y/efTRR83cOlaGZfz48aZqasaMGTJmzBjZtGmTrFy50lRcWfQ9tJusZ8+e0qtXL3nmmWfMAOjRo0c7fX0AAEC88oRgzJgxnlatWnlSUlI8V1xxhadfv36ed99917v//Pnznl//+teeBg0aeNLS0jy/+MUvPHl5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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 4
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-16T08:22:33.478715Z",
     "start_time": "2025-04-16T08:22:33.466324Z"
    }
   },
   "source": [
    "_x_data = data[mask, 16][:, np.newaxis]  # 增加一个维度\n",
    "_y_data = data[mask, 25][:, np.newaxis]  # 增加一个维度\n",
    "model = LinearRegression()\n",
    "model.fit(_x_data, _y_data)"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ],
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 3
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-16T08:22:35.294253Z",
     "start_time": "2025-04-16T08:22:35.230252Z"
    }
   },
   "source": [
    "plt.plot(_x_data, _y_data, 'y.')\n",
    "plt.plot(_x_data, model.predict(_x_data), 'c')\n",
    "plt.show()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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X9/Q0KAHnNraWtmyZYu8/vrreoB59NFHjXOOHDminzNv3jzJy8uT++67T2655Rb55JNPjHPefvtteeCBB+Sxxx6TXbt2yYQJE2TRokVy+vRp91wVAPChKe8NmiZxmzbJw4cPG2WvpaXJ3mnTJIjxNwhkWhfFxsZqr776qlZaWqqFhoZqq1evNh4rKCjQ1Evk5OToxx9++KEWHBysFRUVGeesXLlSi46O1mpqavTjZcuWaWPGjDG9xuLFi7VFixYZx+np6drSpUuN44aGBi0xMVFbsWJFh+peVlam10/dA0BnVFUd186dy9bvvSG/okKT7GzT7evqaq/UBegurn5+d3oxQNUq89e//lUqKyv1bivVulNXVycLFiwwzhk5cqQkJydLzrebv6n7cePGSUJCgnGOaoEpLy83WoPUOY7PYT/H/hyqFUi9luM5wcHB+rH9nNbU1NTor+V4AwBf3e38N0ePypjt243j9N699e6pxPDwbq8L4BcDj/ft26eHGjX+Ro27effdd2X06NF611JYWJj06dPHdL4KNEVFRfq/1b1jwLE/bn+srXNUIKmqqpKSkhI9YDk754DDRnPOrFixQp544omOfssAYCl1NptEb9ok1bamgc9vjBol1zX7vQgEug635KSlpemBZuvWrXLnnXfKkiVL5PPPPxdfsHz5cikrKzNux48f93aVAKBD9lZUSNiGDaaAUzRzJgEHcEdLjmqtUTOelClTpsj27dvlueeek8WLF+tdSaWlpabWHDW7asCAAfq/1X3zWVD22VeO5zSfkaWO1WyuyMhICQkJ0W/OzrE/R2vUbC11AwBf9KvDh+Xfjx0zjuf26SPZEyd6tU6AX2/QabPZ9LEuKvCEhobKZ599ZjxWWFioTxlX3VuKulfdXY6zoNasWaMHGNXlZT/H8Tns59ifQ4Us9VqO56g6qGP7OQDgT2ptNglat84UcP42ZgwBB3BnS47q7rn00kv1wcTnz5+XN998U1/TRk3vjomJkZtvvlmf2h0XF6cHl3vuuUcPHhkZGfrXL1y4UA8zN9xwgzz99NP6+Jtf/epX+to69haWO+64Q1544QVZtmyZ3HTTTbJ27Vp555135IMPPjDqoV5DdZNNnTpV0tPT5dlnn9UHQN94440d+XYAwPJ2lJfLtF27TGXfZGZK39BQr9UJ8BkdmbJ10003aUOGDNHC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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 4
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 梯度下降法实现线性回归模型\n",
    "\n",
    "1. **损失函数**：\n",
    "   该代码的目的是最小化均方误差（MSE），其公式为：\n",
    "\n",
    "   $$\n",
    "   \\text{MSE} = \\frac{1}{m} \\sum_{i=1}^{m} (y^{(i)} - (k \\cdot x^{(i)} + b))^2\n",
    "   $$\n",
    "\n",
    "   其中：\n",
    "   - $y^{(i)}$ 是第 $i$ 个样本的真实值。\n",
    "   - $x^{(i)}$ 是第 $i$ 个样本的特征值。\n",
    "   - $m$ 是样本的总数。\n",
    "\n",
    "2. **梯度计算**：\n",
    "   为了更新参数 $b$ 和 $k$，我们需要计算损失函数相对于这些参数的梯度。\n",
    "\n",
    "   - **对于截距 $b$** 的梯度：\n",
    "\n",
    "   $$\n",
    "   \\frac{\\partial \\text{MSE}}{\\partial b} = -\\frac{2}{m} \\sum_{i=1}^{m} (y^{(i)} - (k \\cdot x^{(i)} + b))\n",
    "   $$\n",
    "\n",
    "   - **对于斜率 $k$** 的梯度：\n",
    "\n",
    "   $$\n",
    "   \\frac{\\partial \\text{MSE}}{\\partial k} = -\\frac{2}{m} \\sum_{i=1}^{m} x^{(i)} (y^{(i)} - (k \\cdot x^{(i)} + b))\n",
    "   $$\n",
    "\n",
    "3. **参数更新**：\n",
    "   使用计算得到的梯度来更新参数 $b$ 和 $k$：\n",
    "\n",
    "   - 更新截距 $b$ 的公式：\n",
    "\n",
    "   $$\n",
    "   b := b - \\text{lr} \\cdot \\frac{\\partial \\text{MSE}}{\\partial b}\n",
    "   $$\n",
    "\n",
    "   - 更新斜率 $k$ 的公式：\n",
    "\n",
    "   $$\n",
    "   k := k - \\text{lr} \\cdot \\frac{\\partial \\text{MSE}}{\\partial k}\n",
    "   $$\n",
    "\n",
    "### 总结\n",
    "\n",
    "综上所述，代码中实现的梯度下降算法通过计算损失函数（均方误差）关于参数 $b$ 和 $k$ 的梯度，并使用这些梯度来更新参数，以最小化损失函数，从而优化线性回归模型的性能。"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-16T08:22:40.708688Z",
     "start_time": "2025-04-16T08:22:40.268804Z"
    }
   },
   "source": [
    "# 初始化参数\n",
    "lr = 0.01\n",
    "b = 0      # 初始截距\n",
    "k = 0      # 初始斜率\n",
    "epochs = 300  # 迭代次数\n",
    "\n",
    "x_mean, x_std = np.mean(x_data), np.std(x_data)\n",
    "y_mean, y_std = np.mean(y_data), np.std(y_data)\n",
    "x_norm = (x_data - x_mean) / x_std\n",
    "y_norm = (y_data - y_mean) / y_std\n",
    "\n",
    "# 计算MSE\n",
    "def compute_mse(_b, _k, xd, yd):\n",
    "    total_error = np.sum((yd - (_k * xd + _b)) ** 2)\n",
    "    return total_error / len(xd)\n",
    "\n",
    "# 梯度下降优化\n",
    "def gradient_descent(xd, yd, _b, _k, _lr, _epochs):\n",
    "    m = len(xd)\n",
    "    _b_history = []\n",
    "    _k_history = []\n",
    "    _mse_history = []\n",
    "\n",
    "    for i in range(_epochs):\n",
    "        # 计算梯度\n",
    "        y_pred = _k * xd + _b\n",
    "        b_grad = -(2/m) * np.sum(yd - y_pred)  # 截距梯度\n",
    "        k_grad = -(2/m) * np.sum(xd * (yd - y_pred))  # 斜率梯度\n",
    "\n",
    "        # 更新参数\n",
    "        _b -= _lr * b_grad\n",
    "        _k -= _lr * k_grad\n",
    "\n",
    "        # 记录历史值\n",
    "        _b_history.append(_b)\n",
    "        _k_history.append(_k)\n",
    "        _mse_history.append(compute_mse(_b, _k, xd, yd))\n",
    "\n",
    "    return _b, _k, _b_history, _k_history, _mse_history\n",
    "\n",
    "# 运行梯度下降\n",
    "b, k, b_history, k_history, mse_history = gradient_descent(x_norm, y_norm, b, k, lr, epochs)\n",
    "# 拟合结果图\n",
    "plt.figure(figsize=(20, 4))\n",
    "\n",
    "plt.subplot(1, 4, 1)\n",
    "plt.plot(x_norm, y_norm, 'y.', label='Data')\n",
    "plt.plot(x_norm, [k * x + b for x in x_norm], 'c', label='Fit')\n",
    "plt.title('Final Fit')\n",
    "plt.legend()\n",
    "\n",
    "# b 变化图\n",
    "plt.subplot(1, 4, 2)\n",
    "plt.plot(b_history, 'b')\n",
    "plt.title('b over Epochs')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('b')\n",
    "\n",
    "# k 变化图\n",
    "plt.subplot(1, 4, 3)\n",
    "plt.plot(k_history, 'r')\n",
    "plt.title('k over Epochs')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('k')\n",
    "\n",
    "# mse 变化图\n",
    "plt.subplot(1, 4, 4)\n",
    "plt.plot(mse_history, 'g')\n",
    "plt.title('mse over Epochs')\n",
    "plt.xlabel('Epoch')\n",
    "plt.ylabel('mse')\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 2000x400 with 4 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAB8UAAAGGCAYAAADiuFAFAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAA2gNJREFUeJzs3Qd4VHXWx/FfEiAJJaH33sESmnQkKooN67qIriAq2HBVrFjgtbI21oaCFbvY+2JBepWqKESQKr0m1ADJvM+5wwyZNAIkuVO+n+e53js3U84E5JbzP+cf5fF4PAIAAAAAAAAAAAAAIAxFux0AAAAAAAAAAAAAAABFhaQ4AAAAAAAAAAAAACBskRQHAAAAAAAAAAAAAIQtkuIAAAAAAAAAAAAAgLBFUhwAAAAAAAAAAAAAELZIigMAAAAAAAAAAAAAwhZJcQAAAAAAAAAAAABA2CIpDgAAAAAAAAAAAAAIWyTFAQAAAAAAAAAAAABhi6Q4ECJWrlypqKgojRkzpkg/p379+rr66quP+32Sk5OdBQCAYPF///d/zrF0y5YtbocS0SZOnOj8OXzyySduhwIACFEc04OD/RkMGjTI7TAAAIALOB9DKCIpDgQJS3bbQSS35d5771WwySvW6tWr5/r8devWOQfKBQsWFHusAABEYtI5r+XDDz90O0QAAFAA+R3Pb7jhBrfDAwAAxZB0zmvZsGGD2yECIaeE2wEACPTwww+rQYMGAftOPPFE1atXT3v37lXJkiUVLM4880z17ds3YF98fLyz/uGHH3IkxR966CGnEr1Vq1bFGicAAJHo3//+t0455ZQc+zt16uRKPAAAoHCuu03Tpk1diQcAABSvl19+WWXLls2xv3z58q7EA4QykuJAkDnnnHPUrl27XH8WFxenYGIX4f/6179y/VmpUqWKPR4AACLF7t27VaZMmXyf061bN/3jH/8otpgAAMDR2bdvn3PtHB0dfUzX3QAAILTt2bNHpUuXzvc5dl1fuXLlYosJCGe0TwdCeE5xm/vbRomtXbtWF110kbNdpUoV3XnnncrIyAh4/dNPP63OnTurUqVKTjV327Zti3Quz6xzilsbV1+lWv/+/f0tXop6fnQAAHJj813985//VEJCgnNcvPXWW52b0gXx8ccfO8dQO5baRandpLbjcNbjrR3jVq1aleO1Q4YMcW58b9++3b9v1qxZOvvss5WYmOhcCHfv3l3Tpk3LtWXaH3/8oSuuuEIVKlRQ165dVZhzgb733ntq1qyZMwDPvt/kyZNzPHf+/PnO4D37vdk5xxlnnKGZM2fmeN6OHTt0++23O91hYmNjVbt2bafCLfs8Y5mZmXrsscecn9vn2vstW7Ys4DlLly7VpZde6kzPYs+x515++eVKTU0tlO8PAAgfduxt3Lix02lt48aN+T73SMe0OXPmOMfIt956K8drv//+e+dn33zzjX+fnQtcc801qlatmnPsO+GEE/TGG2/kOr2JTWPywAMPqFatWs6xPy0t7bi/u1172/eeO3euc91v5ynWgW7UqFE5nrtp0yZde+21Tqx2bE1KSsr1e9px+rnnntNJJ53kPM/uNdg5i/1usvviiy+cz/d993HjxgX8fOfOnbrtttv85wZVq1Z1KuDnzZt33N8dABBcfNevf/75p3O9bNe6dgx58MEH5fF4tGbNGl144YXOMdiu85555pkc7/HCCy84xxM7Ttr1rxWQvf/++wHPKcixNy8HDx7UI488okaNGjmvtePTfffdp/T0dP9zzj//fDVs2DDX11v3texFbe+++67/XkHFihWd61b7rnkdr0899VTn+9nnHi/fOcbYsWOd97Pfqw2iv+CCC3LEUJD7Gj5Llixx7p3Yn5891+4Z3H///bneA7A8hVWu25+33f+3ZH9WP/74o3Mfw55j5172XoXx3YGjRaU4EGTsJm/2m8b5jQSz5HfPnj3VoUMH50b8Tz/95JxM2EH9xhtv9D/PLmbtQHjllVdq//79zoX4ZZdd5lzIn3feeccUqyUQssdarlw552QiqxYtWjht4YcOHaqBAwc6lWvGLtYBAChudlFnF73Dhw93boA///zzTqL67bffzvd1NpjLLu5soJe91m642/HVkth2c90u7uy97777bn300Ue66667Al5v+8466yznot78/PPPzg15uxgdNmyYUyX25ptv6vTTT9eUKVPUvn37gNfbcbtJkyZ6/PHHnZsJR2I3oLMfp40NBLALZp9JkyY5F8/Wbt2O4S+99JJz03v27NnOBbv5/fffneO33biw72fTuYwePdq5qLfX23mI2bVrl/O8xYsXOzco2rRp48Tw1Vdf6e+//w44p/nPf/7jfGcbzGfnP08++aRznmIDBYydr9g5jt2YuOWWW5wLe7tQt3MXu+i2i20AAMxff/3lHD/tJrTddM3vGrogxzS70W03wu3Y3a9fv4DX2zHTjuV2jDJ2PtCxY0f/QDO7cfy///3PSTxbwtuSwVnZTXgbJGfHPzvGHanLWm7X3cbiz/paO5c599xznXORPn36OLHbPQF7jh2TjU3JZt/TBqFZrJY4txvjdiPbjq02UNDH4rdzHztXue6665wEgp2f2LlT1kTA1KlT9dlnn+mmm25y7gfYeZUNaFu9erVzzmFs/nMblG+f2bJlS23dutV5nZ0v2LkCACD89O7d27knbNd93377rR599FHnOG3HXDtmP/HEE87gbDse2jW2JYnNq6++6lybWnW0bwD7r7/+6lwn2iDxYzn2ZmfHNRsQZp9xxx13OO9t1/h2XPr888/98dvg7l9++SVgWjIbhGfHwqeeesq/zwZ7W9LfjsH23ps3b3YS+/adfPcKfOwYaMdWS5pbMtqS+keybdu2HPtKlCiRo326xWG/k3vuuccZBPfss8+qR48eWrBggX/K04Lc1zD2O7fzJTtPsvv5dg/Fzre+/vpr53Oysu9t5xT2fjbg7bXXXnMGwNmfse/cywYZnHzyyU6OwO472LlI9oIAoFh4AASFN9980+5u57qYFStWONv2PJ9+/fo5+x5++OGA92rdurWnbdu2Afv27NkT8Hj//v2eE0880XP66acH7K9Xr57zvkeSV6y++Lp37+4sPr/88kuO+AEAKE7Dhg1zjkUXXHBBwP6bbrrJ2b9w4cI8X2vHzapVqzrHzr179/r3f/PNN85rhw4d6t/XqVOnHMfh2bNnO897++23nceZmZmeJk2aeHr27OlsZz1eN2jQwHPmmWfmiLtPnz4F+p4TJkzI8zhty/r16/3P9e2bM2eOf9+qVas8cXFxnosvvti/76KLLvKUKlXK89dff/n3rVu3zlOuXDnPqaee6t9nvwd7v88++yxHXL7v6YuvRYsWnvT0dP/Pn3vuOWf/b7/95jyeP3++8/jjjz8u0PcGAEQO37Fx8+bNnsWLF3tq1qzpOeWUUzzbtm074msLekwbMmSIp2TJkgHvacet8uXLe6655hr/vmuvvdZTo0YNz5YtWwI+5/LLL/ckJib6r8V9x7+GDRvmuD7PS37H8w8++MD/PLv2tn3PPPNMQKytWrVyzl/sPMY8++yzzvPeffdd//PsZ3buUrZsWU9aWpqz7+eff3ae9+9//ztHTFnPW+w59rtctmyZf5+dT9n+F154wb/Pfg8333xzgb4zACA8jtEDBw707zt48KCndu3anqioKM9//vMf//7t27d74uPjA+5FX3jhhZ4TTjgh388o6LE3NwsWLHDiu+666wL233nnnc5+Owaa1NRUT2xsrOeOO+4IeN6TTz7pfA+7bjYrV670xMTEeB577LGA59l1bYkSJQL2+47Xo0aN8hzN7zK3pVmzZv7n+c4xatWq5T+Wm48++sjZb9faR3tfw86J7NzI9z1zOw/wxZf1vMjYvYRKlSr5H//3v//1n7cBbqN9OhBkRo4c6Yxsz7ociY26zspGcS1fvjxgn280mG8EuVVk2fOOp12ZtbrJHqtvtDwAAMHq5ptvDnhsVcjmu+++y/M11irURlpbFZS1EPWxbivNmzd3Rr772Ihya4dmo6izVpXZaGg7dhobqW2twW2ku40UtwowW2yucGvhau3LrW1pfsf7I7EOLdmP07bY6Pzsrd+sWt2nbt26TpzWHtY60tjyww8/OFO1ZG0fV6NGDSd+q/TytX799NNPnTasF198cY54slanGxudnrXCzddJxncO46sEtziyt14DAMAsWrTImXrEqpesa5qvG0tejuaYZsfzAwcOOFXQPvZaq6i2nxnLC9uxr1evXs6273hui10b23V39mtuqzzPen1+LNfdtpx22mk5Ksauv/56/2M7xtpjO3+x8xLfuY51XrFKch+rALOKPOv2YpXyxr6THbetk82RjudWgWad6nysCsyq2LPek7CqM6vCW7duXYG/NwAgtFnFtE9MTIzTZcSOlVbNnfX4YG20sx8zrMuYVWjn5liOvVn5rvsHDx4csN8qxo3v2t6OZVbRbZ1XsnZqs2t7q1K362Zj5wl27W7V0lljseOtdXqbMGFCwOfYfQG7Fj4a9n2znwdYl7nsrLLdurb4WCW8neP4vnNB72tYpbvdk7BOM77vmdd5QF65CbvP4Tun8lWff/nllznucwDFjfbpQJCxVqnZ5yTJj29ur6zsRkDW+UqNtRq1NjV2Ez7r/Ci5HcgKyub1tAtgADgadmJtbabs5tz69eud1lR2Y9LNz8vr30Jr55y9BTZCn12YZmU3cq2N98qVK/N8jW+OcLtgz84uHu0metY253aB7ZvPyy6grTWpb+5SYwlxk70la1Z2MZ/15r61IzsaNgdoQY7T2X8fpmnTpk4i2i6GjW3n9t2tHZ5d1No8ZTaHmw0EsJapBZH94tr3XX3nMPZ97fc4YsQIp62eXVjbVDC+eekAALAb4tZ21AZQ2fyUR2LHtYIe02yQlx3j7Xjuu4Fv29aa3dq++t7PkuSvvPKKs+TGbj5ndbTH84Jed9esWdOZPzT78dzYOY7dwLfzGTvu23lP9u+e9XzHjuf2ftkH0hXkeJ7bPQk7p7Zznjp16jgD8azNu924z2uuVgBA6Mt+fLBrOLuPnX2KE9tvCVQfa/1tA93sHnnjxo2dKchs4FqXLl2O+diblR3r7Dho752VJbEtees7FhobBPfFF19oxowZzjSgdny0e0vWltzHru3tmj+362rf4LOsatWqdcSpU7KzNuz5TQ3jkz0Gu9dl39N3r6Og9zV8gxR806kdz7W93QOx36O1VLeBEvfee69TCHDJJZc4Sfvs5yRAUSMpDoQ4G2l3JDbvl91EtgOozRNqI8TsgGwjyt5///1iiRMAfKwS1m4y2ohTOwkOhs+zZHlWvrmoCprcQ2g7ngFiubGbyJbAtRHllhS3+cZsXk3ffFrGNzraBmy0atUq1/fJfnP/aKrKQvkcJuso/GeeecaZ59RGlFt1nlWy+eaCtyQBACCy2bmazQlqg6eyVkkXFruJa/NmWsWXVV599dVXTpW1VWVnPZ7bgK28BrpZ5XSkH8+tes7OjWxwqh3P7fzHzousus4GDQIAwk9ux4eCHDNsoFZKSopT4DVu3DinStruZ1sntIceeuiYjr3Heh/ABt+VLl3auba3pLitLYlrA+F9LB57L7uPlNv3C/fr+oL8udp3toIVq5q3anT7c7WBhjbI0M4LCpLfAAoLSXEgAtjJg43Es9Hz1qLFJ7c2K6GScAAQuuzGV343v6ybxf33368PPvjAGf1rI1PtpllycnKRfJ5vRHBWloCzlpRUr4QnG8mdtUpr2bJlzoWstV7NS7169Zy1XZz7qsN8bJ/v51lvoltLMvuZXezZhbRdUPv42ozaqGm3u674qtaz+vPPP52Yfd1obNu+S3ZLlixxbgpY5Zfve1kr28JkFe+2PPDAA5o+fbpTITBq1CinAw4AILJZctUS1HbMtaS1VZLlx45rBT2m+Y7ndgPerqmtIt3agF5++eUB72efa23Z3T6eW2tyGwyatVrcjufGd45j5yu//vqrc96TtTLLvrvv577jud0/2LZtW4GqxQvCBufbn5MtVsHXpk0bZ8ABSXEAQHZ2LLNjsC379+93ChzsmDFkyJDjPvbasc6Og3Yd7OuUYjZu3Ojcg8p6bW9xnH/++U7nN+tgZtf2NsjLBsL72DHTkr92j8HXoSVYru0tLrvf4RskUND7Gr57YYV5bW/nHVYhbov9Lh9//HHn3p8lyt0+h0JkoTcBEAFstJUlpe1kwcfaplj7l+LiuzC3kwsAyM+gQYOc1lQffvihc9PORuCeffbZuSbuioJdCNnI1azzXCG8jBw5MuDxCy+84KzzuylrU5tUrVrVScZmnYbERoMvXrzYmYMre+WaHX9tcIddQNuFdNab1NY61C6en376aWcOz+x8bcuLg/3/lnXONWsbawNDrE2dfQdbbNv2ZW0xb/+vWMeZrl27+tvC2/deuHChUwmW3+j/grDEw8GDBwP2WXLcLqaz/hkAACKXXeda61Rrv2nVYlbJnZ+jOaYZu1luxx67CW6LJXatA1vW97NjnyXNc7txXJzHcztmjh492v/Ykgj22JIHdt5hrG35hg0bnO+S9XV2LmSVbDY/u7HvZMdtGxBwvMdzuw9hU8JkZedUllDgeA4AyC5rK3VjrcZbtmzpHH8OHDhw3MdeOxaarC3QjSVqTfZre0vM28Aza/9t17r2OCtL2FtMdszMfoy0x9m/T1F6++23tXPnTv/jTz75xOmM6LvXUdD7GnbuYOc7b7zxhtP1Lvt3Olo2yC47X8c8zgVQ3KgUByKAHdDswG5JJRs5b6OyLSFgc4pYwqk42I1/m5fFDro2ms8SAx06dDjq+dQAhDc72bYuFrb2jby98847ndZKtt9GkhY1a8Fp/04VR2t3uGPFihXOtCJ2XLSE8LvvvuscH63Nfl5s2hHrWNC/f3/nhrG1TrUb6M8995xTfXX77bcHPN8uNK3bgB1/7aI0+4WzJXbtotouTm3eUntfm1ts7dq1zkhpuyH/9ddfH9f3tOlT9u3bl2O/jRLP2k7OujH07NnTaU1uHWWsNZ3JeiPcqrJ//PFHJ1lgFV5WlWc32u0C1uYJ9bnrrrucC28bzGJTFthNeLsAtiSFnQPk9zvO7ueff3YGydh72Yh7u2n/zjvv+G+CAADgO6basfyiiy5y2nR/9913OaqfsiroMc3HjuHWstW6r9mgyexzX/7nP/9xjt12fTtgwADnxr0d+2zAmc2JmtuN4KNh1d72/bKzyvUzzzzT/9jOne1cxZL9dty0xPeCBQucQQO++UwHDhzofFebmsTmRLVzGDtuT5s2zUkO2DmwsXOYq666Ss8//7wzMNXOmayqzs4t7Gd2fC4oOw+yKU9s4IKdB1jy3X4vv/zyizNNCgAAWdngNevmZx3C7FhnydoXX3zRub/tO04dz7HXjkU2kM6Oj1a8Zdf3s2fPdu4F2bmEHeeyJ9Htc+3eVG7XonbP284trIrdjsH2HvZ8u+9gg8Xt2GuvPR52rM7eht3YeYD9jnysu4ud39j9BbtfYcd2u/9vv6Ojva9h5wD2XtbZxb6D3cO372dFJHZ+cTQefvhhp326/RlaNbrlJuy+g50f2GcAxcoDICi8+eabNszK88svv+T68xUrVjg/t+f59OvXz1OmTJkczx02bJjz3Kxef/11T5MmTTyxsbGe5s2bO++T2/Pq1avnvO+R2OtuvvnmPH/evXt3Z8nqyy+/9LRs2dJTokSJHN8FQGSyfws+//xz/+NvvvnG2Wf/tmVd7N+Nf/7zn85zFi9e7Dwnv+Wee+4p0OflplmzZp5BgwYV8jdFMPAd9/744w/PP/7xD0+5cuU8FSpUcP689+7dW6D3GDt2rKd169bO8bRixYqeK6+80vP333/n+txXX33V+Tz7nLzef/78+Z5LLrnEU6lSJec97Thsf9fHjx+fI+7NmzcXKMYJEybk+/+HvV/24/m7777rP0+w72fvkd28efM8PXv29JQtW9ZTunRpz2mnneaZPn16judt3brV+Z3WqlXLU6pUKU/t2rWdc4stW7YExPfxxx/ne66zfPlyzzXXXONp1KiRJy4uzvl922f+9NNPBfo9AADCV27Hxj179jjXoHacmjlzZr6vL+gxzSxdutR/DJ06dWquz9m4caNzPK1Tp46nZMmSnurVq3vOOOMMzyuvvOJ/Tl7Hv/zkdzzPer1t2yeccIJnzpw5nk6dOjnHTTunePHFF3ONtX///p7KlSs7x+mTTjop12vzgwcPep566inn/oE9r0qVKp5zzjnHM3fu3CPeF8h6XyE9Pd1z1113eZKSkpxzIju3t+2XXnqpwL8HAEDoyOv6Na/72L5jmM/o0aM9p556qv8a2a4H7TiSmpp61MfevBw4cMDz0EMPeRo0aOC81t5jyJAhnn379uX6fLvut+/Uo0ePPN/z008/9XTt2tV/H8uOnxZfSkpKnt+1oL/LvBbfdbvvHOODDz5wvkfVqlU98fHxnvPOO8+zatWqY76vsWjRIs/FF1/sKV++vHNuYffLHnzwwSP+WfvyHHaNb+z+xoUXXuipWbOmc05h6z59+nj+/PPPAv8ugMISZf8p3jQ8AADA4ZaXNnLWRtIaq2i58sor9fvvvzsjcLOyUbE2WthaQS5fvjzf961UqZJ/LuT8Pi87q36xFlE26vVoKlqBUGX/T9x8883OyHsAABCakpOTtWXLlkKd+xMAAISGiRMnOhXuNnWbdWYBkDfapwMAgKDRunVrZ95Ba6XUrVu3XJ9j80k1b968SD7/9ddfd9o9kxAHAAAAAAAAgPBBUhwAABSrXbt2admyZf7HNs+SVWbb3Ec2/6FVivft29eZY9CS5Js3b9b48eOdOZBt/qHC/Ly6dev696elpTmjapnbEAAAAAAAAADCC0lxAABQrObMmeO0dfIZPHiws+7Xr5/GjBmjN998U48++qjuuOMOrV27VpUrV1bHjh11/vnnF8nn+Xz44YeyWWX69OlzHN8OAAAAAAAAABBsmFMcAAAAAAAAAAAAABC2ot0OAAAAAAAAAAAAAACAokJSHAAAAAAAAAAAl02ePFm9evVSzZo1FRUVpS+++OKIr5k4caLatGmj2NhYNW7cOGCaMAAAECJzimdmZmrdunUqV66ccxIAAECosVlKdu7c6VzQRkdH9lg0jusAgFDHcd2LYzoAINQF6zF99+7dSkpK0jXXXKNLLrnkiM9fsWKFzjvvPN1www167733NH78eF133XWqUaOGevbsWaDP5LgOAIiU43pQzyn+999/q06dOm6HAQDAcVuzZo1q166tSMZxHQAQLiL9uM4xHQAQLoL5mG4J6s8//1wXXXRRns+555579O2332rRokX+fZdffrl27NihcePGFehzOK4DACLluB7UleI2Os33JRISEtwOBwCAo5aWluZcXPqOaZGM4zoAINRxXPfimA4ACHXhckyfMWOGevToEbDPKsRvu+22Ar8Hx3UAQKQc14M6Ke5r12IHYw7IAIBQRgsyjusAgPAR6cd1jukAgHAR6sf0DRs2qFq1agH77LElB/bu3av4+Pgcr0lPT3cWH2s3aziuAwDC/bgePBOmAAAAAAAAAACAIjN8+HAlJib6F1qnAwAiBUlxAABQYCNHjlT9+vUVFxenDh06aPbs2W6HBAAAAABARKpevbo2btwYsM8eW8V3blXiZsiQIUpNTfUv1jYdAIBIQFIcAAAUyNixYzV48GANGzZM8+bNU1JSkjNX2aZNm9wODQAAAACAiNOpUyeNHz8+YN+PP/7o7M9LbGysv1U6LdMBAJEkqOcUL6iMjAwdOHDA7TBCVsmSJRUTE+N2GACAIDdixAgNGDBA/fv3dx6PGjVK3377rd544w3de++9bocHAAAAAEBI27Vrl5YtW+Z/vGLFCi1YsEAVK1ZU3bp1nSrvtWvX6u2333Z+fsMNN+jFF1/U3XffrWuuuUY///yzPvroI+daHQAAhFFS3OPxaMOGDdqxY4fboYS88uXLO+12jjQJPQAgMu3fv19z5851LsB9oqOj1aNHD82YMcPV2AAAAAAACAdz5szRaaed5n9s3dpMv379NGbMGK1fv16rV6/2/7xBgwZOAvz222/Xc889p9q1a+u1115zuroBAIAwSor7EuJVq1ZV6dKlSege48CCPXv2+Fvf1qhRw+2QAABBaMuWLU5nlmrVqgXst8dLlizJ9TXp6enO4pOWllbkcQIAAAAAEKqSk5Od+7V5scR4bq+ZP39+EUcGAEDoC9mkuN2Y9yXEK1Wq5HY4IS0+Pt5ZW2Lcfp+0UgcAFIbhw4froYcecjsMAAAAAAAAAECEi1aI8s0hbhXiOH6+3yNzswMAclO5cmVn0NTGjRsD9ttjm34jN9ZqPTU11b+sWbOmmKIFAAAAAAAAACAMkuI+tEwvHPweAQD5KVWqlNq2bavx48f792VmZjqPO3XqlOtrYmNjlZCQELAAAAAAAAAAAFDcQrZ9OgAAKF6DBw9Wv3791K5dO7Vv317PPvusdu/erf79+7sWU2amFB3yQ/wAAAAAAAAAAEWJpDgAAFncsnSpXl67Vu+3bKl/Vq3qdjhBpXfv3tq8ebOGDh2qDRs2qFWrVho3bpyqVatW7LH85z/Siy9Kt94q3XVXsX88AAAAAAQvGz1sUyTasn9/zu281nnty8iQDh48+vWxvCa3tX0fW9tinco++MDt3zDyMGLGCD036zn1b9Vf/5f8f26HAwBAAJLiLrj66qv11ltvOdslSpRQxYoVdfLJJ6tPnz7Oz6ILWPI2ZswY3XbbbdqxY0cRRwwA4W/L/v2qMn26//H47dtJiudi0KBBzuI2uxeydq20cKHbkQAAAABAFpbI3b1b2rPn8NqWffsOL+npeT/Oazu3n9mSWzLbLpjCVYMGbkeAfBzIOKDVqav11/a/3A4FAIAcSIq75Oyzz9abb76pjIwMbdy40am0u/XWW/XJJ5/oq6++cpLlAIDiYZXhNy1dGrDvPw0buhYPjiwpybtesMDtSAAAAACEbPJ6504pLS3v9a5duSe4s+/LurbEdDAqWVIqVcq7zrp9pH222H3KmJjjWx/ra7MvCQlu/yaRj/rl6zvrVTtWuR0KAAA5kHk9ZN++v7V371LFxzdRXFztIv+82NhYVa9e3dmuVauW2rRpo44dO+qMM85wKsCvu+46jRgxwkmcL1++3Kkm79Wrl5588kmVLVtWEydO9M/hGhUV5ayHDRum//u//9M777yj5557TikpKSpTpoxOP/10Z97XqlQ8AkCA9MxMJUyZov0ej3/f3XXq6IlGjVyNC0fWqpV3vWSJt0giLs7tiAAAAAAUG7uGs4T19u35L9Zd0Zfgzp703ru3aGO0TpClS0tlynjX8fF2Q9B78WJLXtsF/ZmtbSlIYtsSzIfuHwJFqV75es565Y6VbocCAEAOJMUlrV//ulJSBtqEO3bGqmbNXlGNGtcWexyWvE5KStJnn33mJMWtjfrzzz+vBg0aOInxm266SXfffbdeeuklde7c2Ul027yulvw2liw3Bw4c0COPPKJmzZpp06ZNGjx4sNOW/bvvviv27wQAwTpI6Ydt29Tz118D9i1t316N7WYFgl6tWlLFitK2bdLvv0tt27odEQAAAIBjYvNFW/J68+a8Fzvxz57wtkrvwmCJZas+tqVcucC13WvzJbXzWuf1M0tKk4hGhFaKr9251mmlXjKmpNshAQDgF/FJcUu+HE6Im0ylpFyvChV6FkvFeHbNmzfXr4eSNDZfuE/9+vX16KOP6oYbbnCS4qVKlVJiYqJTJe6rOPe55ppr/NsNGzZ0EuunnHKKdu3a5U+cA0CkDlLyeDzqPH++Zlp1wCFnV6yo7046yd95A8HP/qisWvznn73zipMUBwAAAIKsktsS2evW2YWed23Lhg3Spk2BCe8tW449wW1V0BUq5L2UL3844Z012e3btsWS1wAKRdUyVRUbE6v0jHT9nfa3GlRgDngAQAQmxf/zn/9oyJAhzrzZVuEcLKwa8XBC3CdDe/cucyUpbskaX1Lmp59+0vDhw7VkyRKlpaXp4MGD2rdvn/bs2aPS+VQyzp0712mjvnDhQm3fvl2ZNuJW0urVq9WyZcti+y4AEGyDlP7YvVsn/PJLwL7JrVqpm90oQUjOK25JceYVBwAAAIpRerq0Zo3daPIu2RPftm3L/v1H976WqK5SJffF2kRZktu39i12f4zBzUDQiI6Kdlqo/7n1T61KXUVSHAAQeUnxX375RaNHj9bJJ5+sYGPtea0aMTAxHqP4+MauxLN48WKnXfrKlSt1/vnn68Ybb9Rjjz3mzCk+depUXXvttdq/f3+eSfHdu3erZ8+ezvLee++pSpUqTjLcHtvrACBYFfUgpZv//FMv2Q2aQ6qULKm1nTqppM3zhpCeV9wqxQEAAAAUEmtlvnKltGrV4cS3b9vWVu1dUJUqSTVrepcaNbxL1aq5J76tjTmAkFcv0ZsUZ15xAEDEJcWtZfeVV16pV1991Wn/HWws0WLtea0a0ZIvlhBv1my0K1XiP//8s3777TfdfvvtTrW3VXg/88wzztzi5qOPPgp4vrVQz8iwmA+zqvKtW7c6lfl16tRx9s2ZM6cYvwUABNcgpc3796vq9OkB+8Y0b65+2aaeQOhp3dq7njtXOnDA2zkRAAAAQAFam1sL87/+kpYtO7z2bW/deuT3iI+X6taV7N5T7dreZHfW5Let7ZqLRDcQsfOKkxQHAERcUvzmm2/Weeedpx49ehwxKZ6enu4sPtYyvDjYfLXWnteqES35UhwJcfueGzZscJLaGzdu1Lhx45xW6VYd3rdvXy1atEgHDhzQCy+8oF69emnatGkaNWpUwHvYPOM26GD8+PFKSkpyqsfr1q3rJMvtdTb/uL3PI488UuTfBwCCcZDSyLVrNWipVaAftr1LF5UnexoWTjjB2zFx+3Zp3jypQwe3IwIAAACCyJ49UkqKtSWU/vjDu+1Lfu/alf9rrXK7Xj1v4jv72pbKlWlbDiDPSnFj7dMBAIiYpPiHH36oefPmOe3TC8KSwg899JDcYEmX4qwOtyR4jRo1VKJECVWoUMFJaj///PPq16+fUxluj0eMGKEnnnjCmYv91FNPdX4/ljD36dy5s5P47t27t1MdPmzYMGcu8TFjxui+++5z3q9NmzZ6+umndcEFFxTbdwMAtwcp7cvIULmpU3XQKiAOubduXQ1v2LAQo4XbrJHKqadKX34pTZpEUhwAAAARaudOb9LbFl8C3NYrVnirwnNjCW2r8m7cWGrUyLv2bdtStmxxfwsAYYJKcQBAsIryePI6Oz4+a9asUbt27fTjjz/65xJPTk5Wq1at9Oyzzxa4UtxagKempiohISHgufv27dOKFSuc+bfj4uKK4itEFH6fAMLFuK1bdc5vvwXsW9ahgxpZez8X2LEsMTEx12NZpCmK38V//ysNHiydc4703XeF8pYAAOSJ47oXvwfAJXYLb906acGCwMUqv/NSsaLUsqXUooV3adLEm/Ru0MAqRIozeiCocCwrut/FtNXT1PXNrmpQvoGW37q8UGIEAKAwjmVFViluc2Jv2rTJqVT2sVbhkydP1osvvugkv2NiYgJeExsb6ywAABwtG+PVcd48zbYqiUPOrVhR35x0kqJo6xe2unf3rqdOlQ4elEoU+cQwAAAAQDElwG1+79mzpfnzDyfAt2zJ/fk2f7clv32LJcBtbW3QuR4CUIzqlfe2T1+TtkYZmRmKiQ7MAQAA4JYiu3V8xhln6LdslXr9+/dX8+bNdc899+RIiAMAcKx+371bJ2abqmNKq1bqWr68azGheCQlSYmJUmqq9x5hu3ZuRwQAAAAcg82bJbummTXLmwi3Zdu2nM+z+2nNm0utWnkXOyG2pWpVN6IGgBxqlK2hktEldSDzgNbtXKc6iXXcDgkAgKJNipcrV04nnnhiwL4yZcqoUqVKOfYDAHCsbkhJ0ej16/2Pa5YqpVUdO6qETTiNsGf3BLt1k775Rpo4kaQ4AAAAQqQK3Ob8njxZmjJFmjlTWp5Li2Hrpti6tdS27eEk+AknSC5NDQUABWGV4ZYIX759uTOvOElxAECwoMkoACAkbdq/X9WmTw/Y907z5vqXtQ1ExLVQt6T4pEnSnXe6HQ0AAACQjc3zY22NLAHuS4Rv3ZrzeVYB3r691KGDd33yyVKpUm5EDADHpX75+k5SfFXqKnVTN7fDAQCg+JPiE62ECwCA4/T833/r1mXLAvbt6NpViUwoHZGSk71ru7eYkeGtHgcAAABcrQT//Xfpxx+lH36Qpk6Vdu0KfI5Ve3fqJJ16qtS5s3TKKRLTPwEIE/USvfOKW6U4AADBguwBACBk7M3IUGnLfGbxQL16eqRBA9digvusi2S5ct55xRculNq0cTsiAAAARJyNG6WffvImwS0ZnmWKJ0diotS1qzcJboudtFIFDiCMK8XNqh2r3A4FAAA/kuIAgJDw3datOu+33wL2Le/QQQ2YTy/iWYMAu7/4v/95W6iTFAcAAECRsxZFNhf4V19J33/vHZ2ZlV2nWPL7rLOk00+XTjqJlkYAIq9SPJVKcQBA8Ih2OwAAAPLj8XjUds6cgIR4r0qV5ElOJiGOHC3ULSkOAECkGTlypOrXr6+4uDh16NBBs2fPzvf5zz77rJo1a6b4+HjVqVNHt99+u/bt21ds8QIhy1qgf/aZdPXVUvXq3pGZTz55OCFuozPvucdbMb5tmzRunDR4sLe1EQlxABGESnEAQDCiUhwAELR+27VLJ8+ZE7BvWuvW6mytB4Esunf3ridPljIzpWiG/QEAIsTYsWM1ePBgjRo1ykmIW8K7Z8+eSklJUdWqVXM8//3339e9996rN954Q507d9aff/6pq6++WlFRURoxYoQr3wEIalu3Sp9/Ln36qfTzz9L+/Yd/ZnOAn3eed+nRQ6pSxc1IASBo1CvvrRRflbpKmZ5MRUdxkQ4AcB9J8SCSnJysVq1aOTcxACDSXbdkiV7fsMH/uHZsrFZ06KASZDuRCyvKKVNG2r5dsqYCSUluRwQAQPGwRPaAAQPUv39/57Elx7/99lsn6W3J7+ymT5+uLl266IorrnAeW4V5nz59NGvWrGKPHQhaVuVtifCPP/ZWfVurdJ9GjaQLL5R69ZK6dJFKlnQzUgAISrUTaismKkb7M/Zrw64NqlmuptshAQBA+3Q3+EbhZ1+efPJJPfLII/7n2c0JEuQAIs2G9HRFTZwYkBB/r0ULrenUiYQ48mT3Iq17paGFOgAgUuzfv19z585VD6tQPSQ6Otp5PGPGjFxfY9Xh9hpfi/Xly5fru+++07nnnltscQNBaedOacwY6ZxzpGrVpOuu884Vbglxa3/+2GPSH39IS5dKzzzjnb+HhDgA5KpEdAnVSqjlbK/cwbziAIDgQHbBJWeffbbWr18fsLRt21blypVzOzQAcM1/16xRjWw3cFO7dtUVdlMKKGALdZLiAIBIsWXLFmVkZKhatnMle7whywDDrKxC/OGHH1bXrl1VsmRJNWrUyOladt999+X5Oenp6UpLSwtYgLBgCe8ff5Suuso7R7h1XLB5wA8e9LYeskT4n39K8+dL9v9IixZSVJTbUQMIcyNHjnSKpeLi4pypUXwD2XJz4MAB57hux3N7flJSksbZv2NBoGGFhs56xfYVbocCAICDpLhLYmNjVb169YDljDPO0G233eb83G5KrFq1Srfffru/khwAwtXejAynOnzwX3/59w2rV0+e5GQllGCmDxxdUnzKFMnjcTsaAACC08SJE/X444/rpZde0rx58/TZZ5857dazdi3Lbvjw4UpMTPQvderUKdaYgUKXkuJNctevL511lvTuu9KePVLTptLDD0tLlkgLFnif06SJ29ECiCBjx47V4MGDNWzYMOc4bUnunj17atOmTbk+/4EHHtDo0aP1wgsv6I8//tANN9ygiy++WPNtMI/LGpb3JsWXb1/udigAADjCKtPg8Xi0JzPTlc8uHR1dqIlruzFhJz0DBw505ocDgHD1zZYt6rVoUcC+lR07ql5cnGsxIXTnFbcxFJs3S6tXS/XquR0RAABFq3LlyoqJidHGjRsD9ttjG3idmwcffFBXXXWVrrPW0JJOOukk7d6927n2vP/++53269kNGTLEuUHvY5XiJMYRcvbtkz75RHr5ZWn69MP7y5eX+vSR+vWT2renEhyAq0aMGOHcC+5vnSskjRo1yhm89sYbb+jee+/N8fx33nnHOX77pkG58cYb9dNPP+mZZ57RuzbgJwgqxZfvICkOAAgOYZUUt4R4WSsPc8Gubt1UJiamwM//5ptvVLZsWf/jc2zOqiwqVqzo3Nywdup53cwAgFCW6fGozZw5Wrh7t3/fxZUr67MTT3Q1LoQuG0dhXS7nzpVmzSIpDgAIf6VKlXKm4Ro/frwuuugiZ19mZqbzeNCgQbm+Zs+ePTkS33bt6RtonlenM1uAkGTdqEaPlt54Q9q61bvP/s6ffbY3Ed6rl/dEEgBctn//fs2dO9cZjOZjx+wePXpoRrap5rJOcWJt07OKj4/X1KlT5TZfUvyvbYe7AgIA4KawSoqHktNOO00v2+jkQ8qUKaM+NjIZACLAwl271GrOnIB9M1q3VsfERNdiQniw4h5LituUa//8p9vRAABQ9KyCu1+/fmrXrp3at2+vZ5991qn89lWY9e3bV7Vq1XJaoJtevXo5VWitW7d25ildtmyZUz1u+33JcSAs5gr/9lvppZek778/vL92bWngQMk6JdSo4WaEAJDDli1blJGRoWrVqgXst8dLbFqHXFhrdTuun3rqqc684jYwzjqQ2vvkxRLptmTtAFMUGlVs5Kxpnw4ACBZhlRS3FuZWse3WZx8NS4I3bty4yOIBgGB1zZIlenPDBv/jurGxWt6xo2JoU4hC0KGDtyOmJcUBAIgEvXv31ubNmzV06FBt2LBBrVq10rhx4/w31FevXh1QGW5zj9rUX7Zeu3atqlSp4iTEH3vsMRe/BVBIbF7wMWOs/7C3QtynZ0/rKSydd553vh0ACBPPPfec0269efPmzvHdEuM2MM7arefFBso99NBDxVYpvnbnWu07uE9xJejKAQBwV1hdCdiB/2hamIdCK7z8RvUBQChZn56umtnafX3QooUuzzYCGjjeSnFj1eIHD3LPEwAQGaxVel7t0idOnBjwuESJEho2bJizAGFj0yZp5Ejv4muRXqGCtyL8+uulRt5qRQAIZpUrV3a6tmzcuDFgvz3Oa3pNG9z2xRdfaN++fdq6datq1qzpzD3esKE3IZ0ba89unWayVorXqVNHha1SfCWVK1VOO/fv1ModK9W8cvNC/wwAAI7G0ZU3o1jVr19fkydPdkbvW/scINTs2/e3tm+f4KwR2UasWZMjIZ7WtSsJcRS6Zs2khARvkdCvv7odDQAAAIrU0qXSDTdI9epJDz/sTYjXry89/7y0Zo305JMkxAGEVIFU27ZtnRboPpmZmc7jTp065ftam1fcpks5ePCgPv30U1144YV5Pjc2NlYJCQkBS1EVsPmqxWmhDgAIBiTFg9jDDz+slStXOm1vbNQfEErWr39dM2fW08KFpztre4zIsycjQ1ETJ+qOLK0LH6pfX57kZJWjhBdFwLrDduni3Z482e1oAAAAUCRsbt1//Utq3lwaPdpGZEvt2kljx3oT5bfcYvPWuR0lABw1q+B+9dVX9dZbb2nx4sW68cYbtXv3bqcluunbt69T6e0za9YsZw7x5cuXa8qUKTr77LOdRPrdd9+tYOBLiv+1LcuUFgAAuISMhAvG2PxWBWhr17FjRy1cuLCYogIKj1WGp6QMtPGsh/ZkKiXlelWo0FNxcbVdjg7F5astW3ThokUB+1Z17Ki6cXHH/Pdq796lio9vwt8j5Kt7d+l//5MmTZJuu83taAAAAFCoyfBHHpE++EDyeLz7bJ5wS/5062ZliW5HCADHpXfv3tq8ebOGDh2qDRs2qFWrVho3bpyqHeq0t3r1akXbaPBDrG36Aw884CTFy5Ytq3PPPVfvvPOOypcvr2DQqIK3WweV4gCAYEBSHEChs8Tl4YS4T4b27l1GMjMCZHo8SpozR4t27/bv+0eVKvr4hBOO+T2t08DhgRbRatbsFdWocW0hRYxwTIr7KsUzM73V4wAAAAhhy5ZJw4YFJsOtNfDQoVKbNm5HBwCFatCgQc5SkKKq7t27648//lCw8rdP30FSHADgPm4TAyh0Vsmb85+XGMXHN3YpIhSXBTt3KmbSpICE+Kw2bY4rIZ5X5wHmqkde2rb1dsvctk3K1qwAAAAAoWTjRunmm6UWLaT33/cmxC+6SJo3T/riCxLiABDkmFMcABBMSIoDKHRWDW6VvJYI94pRs2ajqRIPc/0WL1bruXP9jxvFxelg9+5qn5BQZJ0HgNyULHl4XvFsg+gBAAAQCnbu9FaGN2okvfSSdPCgt036/PnS559LrVu7HSEA4CiT4h5fpw8AAFxC+3QARcJaW9sc4pa4tApxEuLha116umrNmBGw76OWLXVZ1aqF3Hkga2KczgPI3xlnSD/84J1b/N//djsaAAAAFEhGhvTKK96E+ObN3n0dOkhPPHF4jhwAQMioV76eoqOitefAHm3cvVHVy1Z3OyQAQASjUhxAkbFEeIUKySTEw9iTq1fnSIjv7Nq10BLihs4DOBbnn+9d//yztGuX29EAAADgiCZP9s6Dc9NN3oR406bSJ59Idr1BQhwAQlKpmFKqk1DH2aaFOgDAbSFfKZ6Zmb2lLo4Fv0cAR2N3RobKTpkSsO/RBg10f716RfJ5dB7A0bJpJxs0kFaskMaPly680O2IAAAAkKs1a6S77pLGjvU+rlBBevhh6frrvfPiAABCvoX6qtRVTlK8c53ObocDAIhgIZsUL1WqlKKjo7Vu3TpVqVLFeRwVFeV2WCHH5nLZv3+/Nm/e7Pw+7fcIAPn5fPNmXfL77wH7VnfsqDpxcUX6uZYIJxmOgrJTgl69pOefl775hqQ4AABA0Nm/X3rqKemxx6S9e70ncJYIf+QRqXJlt6MDABRiUnzCyglUigMAXBeySXFL4DZo0EDr1693EuM4PqVLl1bdunWd3ysA5CbT49EJv/yiJXv2+Pf1rlJFH55wgqtxAXk57zxvUnzcOBsE5r3PCgAAgCAwfbo0YID0xx/ex127ek/cWrd2OzIAQBEkxQ1JcQCA20I2KW6sqtkSuQcPHlRGRobb4YSsmJgYlShRgkp7AHmau3On2s2dG7DvlzZt1C4hwbWYgCPp0sXbcfPvv71t1Bt6r8MBAADgltRU6b77pJdf9o5arFJFGjFCuvJKRjACQJgnxf/a/pfboQAAIlxIJ8WNJXJLlizpLACAwnflH3/o/U2b/I+bxsfrj/btFcNNq4jy2GOP6dtvv9WCBQucQWk7duxQsCtTRjrlFG8h0qRJJMUBAABc9cUX0s03S75uf/37e9unV6rkdmQAgCLUqEIjZ/3XNpLiAAB30SsbAJCrv/ftU9TEiQEJ8U9OOEEpHTqQEI9A+/fv12WXXaYbb7xRoaR7d+964kS3IwEAAIhQ27dL//qXdPHF3oR448bS+PHSG2+QEAeACNC4YmNnvX7Xeu3av8vtcAAAEYykOAAgh+GrVqnOzJkB+3Z166ZLrb0hItJDDz2k22+/XSeddJJCSXKyd22V4gAAAChmP/4o2fnje+9J0dHSvfdKv/4qnX6625EBAIpJhfgKqhTvHQS1bNsyt8MBAESwkG+fDgAoPLsOHlS5qVMD9g1v0ED31qvnWkwIXenp6c7ik5aWVuwxdO4sxcRIq1ZJy5fTQh0AAKBY7N4t3XOPNHKk93GTJtLbb0sdO7odGQDABU0qNdHWv7dq6dalalW9ldvhAAAiFJXiAADHp5s350iI/92pEwlxHLPhw4crMTHRv9SpU6fYYyhbVurSxbv93XfF/vEAAACR55dfpNatDyfEBw2S5s8nIQ4AEaxJxSbOeum2pW6HAgCIYCTFASDCZXg8ajZrlv7x++/+fX2qVpUnOVm1YmNdjQ1F695771VUVFS+y5IlS475/YcMGaLU1FT/smbNGrnh/PO962++ceXjAQAAIoPHIz37rHdE4tKlUq1a0g8/SC+8IJUp43Z0AAAXkRQHAAQD2qcDQASbk5amU+bNC9zXtq3alivnWkwoPnfccYeuvvrqfJ/T8Dj6jcfGxjqL2ywpfvfd0oQJ0q5d3upxAAAAFKJt26T+/aWvvvI+vuQS6bXXpAoV3I4MABAk7dONtU8HAMAtJMUBIEL1+eMPfbhpk/9x89Kl9fsppyg6KsrVuFB8qlSp4izhrnlz71ziNqf4jz9KF1/sdkQAAABhZMYM6fLLpdWrpVKlpBEjpJtukriuAAAcQqU4ACAY0D4dACLMmn37FDVxYkBC/LMTTtDi9u1JiCNPq1ev1oIFC5x1RkaGs23LLiu9DnL21/rss73bkya5HQ0AAEAYtUt/5hnp1FO9CfFGjbwJ8ptvJiEOAMi1UnzT7k1KS09zOxwAQIQiKQ4AEeTxVatUd+bMgH27unXTxRFQLYzjM3ToULVu3VrDhg1zEuG2bcucOXMUCjp18q5nz3Y7EgAAgDCwZ4/0r39Jd94pHTwo9e4t2bRMbdq4HRkAIAglxCaoWplqzjYt1AEAbiEpDgARYNfBg051+P0rVvj3PdGwoTzJySoTE+NqbAgNY8aMkcfjybEkJycrFLRv713bvdoDB9yOBgAAIIRZVXjXrtL770t2LfH889IHH0gJCW5HBgAIhXnFaaEOAHAJSXEACHMfb9qkclOnBuxb26mT7q5b17WYgOLWpIlUvryUni79+qvb0QAAAISoyZOldu2k+fOlypWln36SbrmFdukAgILPK06lOADAJSTFASBMZXg8ajRzpv75xx/+fX2rVXOqw2vGxroaG1Dc7D6tr1qcFuoAAADH4OWXpTPOkDZvllq1kmwanRDpGgQACKKkOJXiAIBwTIq//PLLOvnkk5WQkOAsnTp10v/+97+i/EgAgCX90tJUYtIkLd+3z79vXtu2eqtFC1fjAtxEUhwAAOAYZGZKgwdLN93knT/88suladOkevXcjgwAEEJonw4AcFuJonzz2rVr6z//+Y+aNGnizDv61ltv6cILL9T8+fN1wgknFOVHA0DEuuz33/WJVW8ccmKZMlrYrp2iaWmICNehg3c9fbrbkQAAAISIvXulq66SPv3U+/jxx6V776VdOgDgmCvF/9z6p9uhAAAiVJEmxXv16hXw+LHHHnOqx2fOnElSHAgi+/b9rb17lyo+voni4mq7HQ6O0ep9+1Rv5syAfV+eeKIusLn+AKhLF+/92z//lNavl2rUcDsiAACAILZli3Thhd4RhaVKSWPGSH36uB0VACBENa7Y2Flv27vNWSrGV3Q7JABAhCm2OcUzMjL04Ycfavfu3U4bdQDBYf361zVzZj0tXHi6s7bHhZls3759grNG0Xp45cocCfHd3bqREAeyqFBBSkrybk+e7HY0AAAAQeyvv6TOnb0J8fLlpR9+ICEOADguZUqVUc1yNZ3tpVtpoQ4ACMOk+G+//aayZcsqNjZWN9xwgz7//HO1bNky1+emp6crLS0tYAFQdCxZnZIy0CaJO7QnUykp1xdKErsok+04bOfBg4qaOFHDVq7073u6USN5kpNVOibG1diAYNS9u3c9aZLbkQAAAASpOXMkK2ZYutQ7b7jNH+47iQIAoBBaqDOvOAAgLJPizZo104IFCzRr1izdeOON6tevn/74449cnzt8+HAlJib6lzp16hR1eEBEs5bphxPiPhnau3dZ0CbbcdjYTZuUMHVqwL51nTrpDv7tBPKUnOxdkxQHAADIxZQp0umnS5s3S23aSDNmSHkUNgAAcMxJcSrFAQDhmBQvVaqUGjdurLZt2zpJ76SkJD333HO5PnfIkCFKTU31L2vWrCnq8ICIZnOI5/xnIEbx8d45foIt2Q6vDI9H9WbM0OVZBhhdXb26Ux1eIzbW1diAYNetm3dt//usWOF2NAAAAEHEWqT37Cnt3OkdSThxolSjhttRAUDEGTlypOrXr6+4uDh16NBBs2fPzvf5zz77rFOYFh8f7xSZ3X777dq3b5+CUfPKzZ11ytYUt0MBAESgYptT3CczM9Npk54ba7GekJAQsAAoOnFxtdWs2StOItwrRs2ajXb2B2OyHdLM1FSVmDRJq7P8O7qgXTu92dx7UQEgf5UqSWee6d3+z3/cjgYAACBIfPGF1KuXjXCWzjlH+u47qVw5t6MCgIgzduxYDR48WMOGDdO8efOcArOePXtq06ZNuT7//fff17333us8f/HixXr99ded97jvvvsUzEnxxVsWux0KACACFWlS3Cq/J0+erJUrVzpzi9vjiRMn6sorryzKjwVwFGrUuFYdO65UUtIEZ22PgzXZHukuXrRInebP9z9uVbasMrp3V1LZsq7GFY6s1f/27RNo+R+mhg71rt98U1q1yu1oAAAAXPbee9I//iHt3y9deqk3QR4f73ZUABCRRowYoQEDBqh///5q2bKlRo0apdKlS+uNN97I9fnTp09Xly5ddMUVVzjV5WeddZb69OlzxOpyt5Pif279UxmZGW6HAwCIMEWaFLcRbH379nXat5xxxhn65Zdf9P333+tMX4kWgKBgyeoKFZILNWldFMn2SLVy715FTZyoL7Zs8e/7+sQTNb9dO0VHRbkaWzhav/51zZxZTwsXnu6s7THCS9eu0mmnSQcOSHncVwAAAIgMr70mXXWVlJEh9e0rffihzYPndlQAEJH279+vuXPnqkePHv590dHRzuMZM2bk+prOnTs7r/ElwZcvX67vvvtO5557bp6fY11c09LSApbiUr98fZWKKaV9B/dpderqYvtcAABMiaL8NVi7FgCRy5LsVIcfn2ErVujhbKWse7p1U3yMrwofhckqw1NSBtpkH4f2ZCol5XpVqNCTv8thxu75Tpggffut9NBDbkcDAADgAmubM2CAd/umm6QXXrDsi9tRAUDE2rJlizIyMlStWrWA/fZ4yZIlub7GKsTtdV27dpXH49HBgwd1ww035Ns+ffjw4XrIpQvhmOgYNa3UVIs2LdKSLUvUoEIDV+IAAEQmrnYAIAjbdKcdPOhUh2dNiP+3USN5kpNJiBehvXuXZkmI+2Ro795lLkWEomJTZVqjhblzpXXr3I4GAACgmL3zjnTtoW5et9wivfgiCXEACEE2Venjjz+ul156yZmD/LPPPtO3336rRx55JM/X2BSnqamp/mXNmjXFGnOLyi2ctSXFAQAIm0pxAEDerC334arkaGcedmsz/8HGjbpi8eLA53bqpOqxsa7FGini45scGi+WNTEeo/j4xi5GhaJgA+/bt5dmzZK++0667jq3IwIAACgmH3wgXX215PFIN94oPfecd7QgAMBVlStXVkxMjDZu3Biw3x5Xr14919c8+OCDuuqqq3TdoYvak046Sbt379bAgQN1//33O+3Xs4uNjXUWt+cVJykOAChuDAMGgCBp0/1Hyo2qPX1qQEL82urVnepwEuLFw1qk2+AES4R7xahZs9G0Tg9T55/vXX/5pduRAAAAFJNPP/XOIZ6Z6R0VaBXiJMQBICiUKlVKbdu21fjx4/37MjMzncedOnXK9TV79uzJkfi2xLqxdurByJcUX7wlsCAEAICiRqU4gIhLRluLbKsIdjPRmb1N9+9qqUEaKe0/6N+3sF07nVy2rEsRRi6r1rc5xK1lulWIkxAPXxdfbKPqpXHjpM2bpSpV3I4IAACgCP34o9Snj5SR4a0UHz2alukAEGQGDx6sfv36qV27dmrfvr2effZZp/K7f//+zs/79u2rWrVqOfOCm169emnEiBFq3bq1OnTooGXLljnV47bflxwPNlSKAwDcQlIcgCK9Xbnbbbrv16Oari7+n7Up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JNti26+99prbYSEXJ5wgNW4spadLSUnSvHluRwQACAYffPBBnj+7y5KsCG4ffiitXClVqSJdc43b0QAAXPb444/726TPmDFDL774op588klVrlxZt99+e4Hfx9qvDx48WMOGDdO8efOUlJSknj17atOmTbk+f//+/TrzzDO1cuVKffLJJ0pJSdGrr76qWrVqKZx0qtNJ0VHRWrFjhdamrXU7HABAiCIpjqBiVdXbt08Iierq7GwO8Zz/S8U4c30Ho6+3bFGZKVMC9q3q2FFD69d3LSYABTN06FDdeuut6tWrlz7++GNnsW270LafIbhERUkffSQ1bSqtWyf16ycdOOB2VAAAt91444363//+l2O/Hc/fffddV2JCAWVmSv/5j3fbEh2lS7sdEQDAZWvWrFFjGw0t6YsvvtA//vEPDRw4UMOHD9eUbPff8jNixAgNGDBA/fv3V8uWLTVq1CiVLl1ab7zxRq7Pt/3btm1zPrNLly5OhXn37t2dZHo4SYhNUFI173eatmaa2+EAAEIUSXEE1XzcM2fW08KFpztrexxKbF5vm0PcEuFeMWrWbHShzPddmDI9Hp38yy+6YNEi/75LK1d2qsPrxsW5GhuAgnn55Zedkd92cX3BBRc4i22/8soreumll9wOD7lo3VqaPl2qVEmyf36HDZN27XI7KgCAm9577z316dNHU6cebgN6yy236KOPPtKECRNcjQ1H8PXX0u+/SwkJ0k03uR0NACAIlC1bVlu3bnW2f/jhB6d621hnt7179xboPazqe+7cuerRo4d/X3R0tPPYqs9z89VXX6lTp05O+/Rq1ao5XeSsaj0jIyPPz0lPT1daWlrAEgpooQ4AOF4kxREUQnk+7qxq1LhWHTuuVFLSBGdtj4PJgp07FTNpkn7bvdu/b1abNvrkxBNdjQvA0Tlw4IDatWuXY3/btm110Oa3RFCyhPjjj3u3hw/3dlvt3VvasMHtyAAAbjjvvPOcwWw2uM1ugN9000367LPPnIR48+bN3Q4PefF4vAdyYwnxxES3IwIABAFLgl933XXO8ueff+rcc8919v/++++qV69egd5jy5YtTjLbkttZ2eMNeVw4Ll++3Gmbbq+zecQffPBBPfPMM3r00Ufz/BwbVJ+YmOhf6tSpo1BKik9ZXfDKewAAsiIpjqAQivNx58UqwytUSA66CvF+ixer9dy5/scN4+J0sHt3tbfqBgAh5aqrrnKqxbOzSvErr7zSlZhQMNddJz3xhHeO8X37vG3VKTADgMh1xRVXODetrd3p119/rUmTJqmpzbeB4DVpkjRrll34Sbfd5nY0AIAgMXLkSKdie/Pmzfr0009VyUZFS87ANzveF5XMzExVrVrVuR9gA+V79+6t+++/32m7npchQ4YoNTXVv1jr91BKiv+68Vel7kt1OxwAQAgq4XYAQOB83JkhMR93KFmXnq5a2VosjW3ZUv+sWtW1mAAcvcGDB/u3o6Ki9Nprrzkt2Tp27OjsmzVrllavXq2+ffsWyedbFduCBQu0adMmVahQwWnf9sQTT6hmzZpF8nnhKjpauvtu6a67pIkTpTPOkD7/XFq4UAqzKd8AAEc4nmdVpUoVtWnTJmAaFJtTFEHomWe86/79rXTP7WgAAEGifPnyevrpp/Xrr786183W1txYorqgKleurJiYGG3cuDFgvz2uXr16rq+pUaOGSpYs6bzOp0WLFk5lubVjL1WqVI7XxMbGOkuoqVmuphpWaKjl25drxt8zdHbjs90OCQAQYkiKI6jm47aW6VYhHqzzcYeap1av1t3LlwfsS+vaVeVK8L8+EGrmz58f8Nh3Yf3XX3/5L55tsdZsReG0007Tfffd51xwr127Vnfeeaf+8Y9/aLpNlI2jFhVlv1Ppn/+Uxo6VHnjA5oLz7gcARM7x3Kdx48bOfJ6+n9sAOAShlBTpm2+8B+zbb3c7GgBAEBk3bpwzSN3mFffYVBtZ2HE9vzm+fSyBbdf648eP10UXXeSvBLfHgwYNyvU11m3m/fffd55n848ba99u1+65JcRDXbe63Zyk+ORVk0mKAwCOGpkxBA2bf7tChZ5Oy3SrECchfuz2ZGSozJTA+XUeqV9fD9Sv71pMAI6PzS/qptuz3Pi1+dDuvfde5yLd5je3Uek4NkOHSp9+6r2//sor0vU2NgwAELbcPp7jOP33v971BRdITazbGQAAXrfccosuu+wyDR06NMec4EfbVaZfv35q166d2rdvr2effVa7d+9Wf+tQIjmJ91q1ajnzgpsbb7xRL774om699VYnhqVLl+rxxx/Xv//9b4Wj0+qfprcWvqWfV/zsdigAgBBEUhxBxRLhJMOPzxebN+vibJWiqzt2VB2b8w4ACsG2bdv03nvvqXPnzvkmxNPT053FxyrgEKhlS8nuZVg79RtvlD78UHrzTYkxTAAABJktW6S33vJu59EGHwAQuazFuSW0jychbmxOcJuX3JLr1gK9VatWThW6731t2jRfRbipU6eOvv/+e2cg+8knn+wkzC1Bfs899ygcndbgNGc9Z90c7UzfqXKx5dwOCQAQQg4fQYEQtm/f39q+fYKzjlSZHo9OmD07ICH+zypV5ElOJiEOoFDYRXWZMmVUqVIl50L8yy+/zPf5NnI9MTHRv9jFOnKy++o26N867Nk847fc4nZEAAAgh1Gj7MLT5rCRunVzOxoAQJCx6cUm2gVdIbBW6atWrXIGmc+aNUsdOnTw/8w+Y8yYMQHP79Spk2bOnKl9+/Y5U6zZ1GdZ5xgPJ3UT6zrzimd4MjRldWCXTAAAjiTKk32SkyBiFWV2Ez01NVUJCQluh4MgtX7960pJGWhpYWech81Nbq3YjSXJ9+5dqvj4JmFdgT5v5061nTs3YN/sNm10Cv/fAK4L5mOZtUB/4okn8n3O4sWL1bx5c2d7y5YtTpW4XZw/9NBDzvf65ptv8pz3NLdKcUuMB+PvIhgsXCi1aWNzxklz5njvuQMAgkswH9eLU8T9Hux8pl49KwOU3n9f6tPH7YgAAEF2LNuzZ4/TPr1KlSo66aSTcnRVC+Z25qF2XL/uq+v0+vzXdWenO/XUWU+5HQ4AIISOZbRPR0izpPfhhLjJVErK9c7c5Nu3f59nsjycXLV4sd61mzOHNImP1+L27RWTR5IKAHzuuOMOXX311fk+p2HDhv7typUrO0vTpk3VokULJ8Fto9FtVHpuYmNjnQUFk5QkXXGF9O673urx77+3aUXcjgoAECpGjhypp556ymm1mpSUpBdeeMGZi/RIPvzwQ/Xp00cXXnihvvjii2KJNeRYItyuuWrXtlJAt6MBAAShDz74QD/88IPi4uKcau6sg8dtO5iT4qHm9AanO0nxn1cyrzgA4OiQFEdIsyrwwwlxnwylps7IM1keLhXja9PTVXvGjIB9n5xwgi6tUsW1mACEFhvBbsuxyLRy5kPV4Cg8Q4dKn30mTZ4sXXSR9N57UqVKbkcFAAh2Y8eOdeYxHTVqlNNi9dlnn1XPnj2VkpKiqlWr5vm6lStX6s4771Q32oHnzZrrjRjh3baERrbKPwAAzP333+90VLOObFnn/EbhO62+d17x+evna/ve7aoQX8HtkAAAIYIjNEKatUXP+dfY5szx5Jos37t3WVjMR/7E6tU5EuI7u3YlIQ6gSNgcZi+++KIWLFjgtE7/+eefnYqyRo0a5VkljmPTpIn07bd2fPNWip9wgvTVV25HBQAIdiNGjNCAAQPUv39/tWzZ0kmOly5dWm+88Uaer8nIyNCVV17p3MDP2hkG2YwfLy1aJJUtKw0Y4HY0AIAgtX//fvXu3ZuEeDGoUa6GmlVqJo88mrxqstvhAABCCEdphDSr+ra26N5EuIlRs2ajlZjYOddkeXx84xzzkc+cWU8LF57urO1xMNudkaGoiRN17/Ll/n2PN2ggT3Kyypag8QOAomE31T/77DOdccYZatasma699lqdfPLJmjRpEu3Ri0BysjRlitSihbdT64UXSvfc43ZUAIBgvgk/d+5c9ejRw7/Pbsjb4xnZBtJm9fDDDztV5HZcRz5efNG7tilnypd3OxoAQJDq16+f07kFxddC3UxYOcHtUAAAIYQsGkKezRNubdGtCtyS3r726JYst5bpViHuS5ZnbZ2e33zkwdhi/bPNm3Xp778H7FvTsaNqM+EsgCJ20kknOdXhKD5t20rz5knDhklPPuldTjmFaUwBADlt2bLFqfquVq1awH57vGTJklxfM3XqVL3++utOF5iCsOlSsk6ZkpaWpoiwapX09dfe7ZtvdjsaAEAQs2Pxk08+qe+//94ZRF4y23Qb1tUFhdtC/eU5L+vnFdyrAAAUHElxhAVLYmdPZOeVLD/SfOT2/OJOiluC3uKxdvDZPzvT41GL2bP15969/n19qlbV+y1bFmuMAIDiZWOennhCioryri+/XDrrLOnxx6VWrdyODgAQqnbu3KmrrrpKr776qipXrlyg1wwfPtxpsx5xRo2SMjMlq8Jv3tztaAAAQey3335T69atne1FNu1GFlF2UYdClVw/2Vn/tuk3bdq9SVXLVHU7JABApCfFJ0+erKeeespp5bZ+/Xp9/vnnuuiii4ryI4EjJstzzkeemW+L9aJmLdsPV6xHOxXultA3c3fuVLu5cwOeP6dtW7UtV65YYwQAuOeRRyQr9PvyS+l//5N+/FEaOVIaaIcOAEDEs8R2TEyMNtqcG1nY4+rVq+d4/l9//aWVK1eqV69e/n2Zlvi1GwQlSiglJUWNGjUKeM2QIUM0ePDggErxOnXqKKzt2ye9+qp3mypxAMARTJhAG+/iVKVMFbWq3koLNizQj3/9qCtPvtLtkAAAkT6n+O7du5WUlKSRducWCJH5yIuzSjyvFu62v88ffwQkxJuXLq2M7t1JiANAhLGue198IaWkSJdcIh08KN10k3fe8QybIQQAENFKlSqltm3bavz48QFJbnvcqVOnHM9v3ry5U81mrdN9ywUXXKDTTjvN2c4t2R0bG6uEhISAJex99JG0datUt650/vluRwMAALLp2ains/7+r+/dDgUAECKKtFL8nHPOcRYgWB2pxfqxSE39RWlpU5SQ0E2Jiafk+9zcWrhvVgXFz1wWsO+zE07QxVWqHHdsAIDQ1bSp9Mkn0pVXSh98IJ16qlS6tLd63LYBAJHLqrj79eundu3aqX379nr22WedQer9+/d3ft63b1/VqlXLaYMeFxenE088MeD15cuXd9bZ90e0F1/0rm+4wUro3Y4GAADkkhR/YtoT+uGvH+TxeGhTDwA4oqC6sktPT3eWrC3ZADdbrB+txYuv1saNb/kfV6vWTy1ajMnz+dlbuL+rK/W6rgt4zq5u3VQmxlfNDgCIZHaNb9ObrlwpzZgh7dkjXX+9tHChVQq6HR0AwC29e/fW5s2bNXToUG3YsEGtWrXSuHHjVK1aNefnq1evVnR0kTaKCy+zZ0u//OI9uF4XeH0GAACCQ+c6nVW6ZGlt3L1Rv278VUnVk9wOCQAQ5ILqqthGrScmJvqXsJ+jDGHFKsSzJsSNPbb9R2rhvldldJomBCTEn2jYUJ7kZBLiAIAA1rF22jRpzRrJmojYfONPPul2VAAAtw0aNEirVq1yBprPmjVLHTp08P9s4sSJGjMm78G69rMvbK4OePmmgOvd23uwBQAAQSe2RKxOq3+as00LdQBAyCXFhwwZotTUVP+yxu72AiHCWqbnvn9avq+bFtNL5+qbgH1/d+qku23uOgAA8qgYr137cDL8wQe9FeQAAOA4bdkijR3r3R40yO1oAABAPphXHAAQsu3TY2NjnQUIRTaHeO77u+S6P8PjUdNZs7R83z7/vn9Vq6Z3WrQoshgBAOGlXz9p0SLpmWekG2+UrDPuwIFuRwUAQAizinqb1q1tW6l9e7ejAQAA+ejZ2JsUn7p6qnbv360ypcq4HRIAIIgFVaU4EMoSE09x5hDPyh7b/uxmp6WpxKRJAQnxeW3bkhAHABx1xfhTT0m33eZ9bPOL33mntHev25EBABCCPB7ptdcOH1QBAEBQa1Kxieol1tP+jP2atGqS2+EAACI5Kb5r1y4tWLDAWcyKFSuc7dWrVxflxwKuadFijFq3nq1Gjf7rrO1xdpf9/rs6zJvnf3ximTLK6N5drcuVK+ZoAQDhkhgfMUK64w7vY6sav+kmt6MCACAETZkipaRIZcpIl1/udjQAAOAIoqKiDrdQX0YLdQCAi0nxOXPmqHXr1s5iBg8e7GwPHTq0KD8WcJVVhtepc1uOCvHV+/YpauJEfbJ5s3/fFyeeqN9OOUXRltEAAOAY2WHk6aelTz7xPn73XWndOrejAgAgxLzyinfdp4/EoGUAAELC2Y3PdtbfLv1WHuv6AgCAG0nx5ORk50CUfRljc3QBEeTRlStVb+bMgH27u3XThZUrH9P77dv3t7Zvn+CsAQDwufRSqUsX6eDBw/f1AQBAAWzbdnh02YABbkcDAAAK6MxGZ6pUTCn9tf0vpWxNcTscAEAQY05xoAjtPHjQqQ5/cOVK/76nGjaUJzlZpWNijuk9169/XTNn1tPChac7a3sMAIDPLbd41088IV11lbRli9sRAQAQAqzNSnq6dPLJ0imBXb8AAEDwKluqrE6rf5qz/XXK126HAwAIYiTFgSLy0aZNSpg6NWDfuk6ddGfdusf8nlYZnpIyUFLmoT2ZSkm5nopxAIDfJZdYtx47Znjv759xhrR1q9tRAQAQxKzV6quvercHDvTOSwIAAEJGr6a9nPXXf5IUBwDkjaQ4UMgyPB41mDlTvf/4w7/v6urVnerwGrGxx/Xee/cuzZIQ93+i9u5ddlzvCwAIHyVLSj//LNm4rOrVpV9/lXr08HaFBQAAuZg1S1q0SIqPl6680u1oAADAUTq/6fnOetqaadq6h1HhAIDckRRHWAiWObZnpaWpxKRJWmnleYfMb9tWbzZvXijvHx/fJJf/bWMUH9+4UN4fABAerMDN5ha35Hi1atKCBdJ550mZ2cdVAQCAw1Xil10mlS/vdjQAAOAo1StfTydVPUmZnkyNWzbO7XAAAEGKpDhCJqmd13OCZY7tSxctUsd58/yPk8qUUUb37mpVrlyhfUZcXG01a/aKkwj3ilGzZqOd/QAAZNeihTcxnpAgzZwpffqptGqVt0ssAACQlJYmffihd3vAALejAQAAx4gW6gCAIyEpDtcVJKmd13OCYY7tVfv2KWriRH22ZYt/31cnnqgFp5yi6CKYi65GjWvVseNKJSVNcNb2GACAvLRsKd1+u3e7b1+pfn3pgguk9HS3IwMAIAh89JG0Z49k3b2szQoAAAjpFupWKX4g44Db4QAAghBJcbjayrwgSe38nuP2HNsPrVyp+lZ6l8Webt3Uq3LlIv1cqwyvUCGZCnEAQIHcequ3Wtw3u8c330hXXEHFOAAAeust7/rqq73zjwAAgJDUvlZ7VSldRanpqZqyeorb4QAAghBJcRSqo21lXpCkdn7PcWuO7bSDB53q8P9budK/b0SjRvIkJys+xtfaHACA4FChgveevyXCR4+WSpWSPvvMuwAAELGWLZOmTpWio6V//cvtaAAAwHGIiY7xt1D/bDEXuwCAnEiKo9AcSytzb1I7+2j8aH9S2167f//mXJ7jTXxbpXTDhk9k+atc9HNsf7BxoxLtxkkW6zt10u116igYq/EBADAXXSS99540cKB0zz3efdZWffdutyMDAMAlb7/tXZ95plSrltvRAACA43RJi0v8SfFMT/YiKwBApCMpjkJTeK3MPVmqzutq8eLeh/ZF5Uh823OWL7/n0OdGqWHD4UU2x/bBzEzVmTFDVyxe7N93bfXqTnV49dhYBWs1PgAA2d17r1SvnrRmjfTvf7sdDQAALsjMPJwU79fP7WgAAPAbOXKk6tevr7i4OHXo0EGzZ8/O87ljxoxRVFRUwGKvi1Q9GvZQQmyC1u9ar5l/B055CQAASXEUmiNVfeedSM8+oalHqakzlJIyIMfPWrT4SB07rnQS3zkr0z1avnzIMVdP51d9PSM1VSUnT9bf6en+fQvbtdNrzZsr2KvxAQDIrnRpu3ni7Rb7xhvSBx+4HREAAMVs8mRp1SopIcHbTgUAgCAwduxYDR48WMOGDdO8efOUlJSknj17atOmTXm+JiEhQevXr/cvq+z4FqFiS8Tq/KbnO9uf/vGp2+EAAIIMSXEUsewJ70B5zQl+4MCWXJPlxtcavfAq0/Ovvr7ot9/Uef58/+M2Zcsqs3t3nVy2rIpbYX5nAEBkS06WHnjAu33bbVJqqtsRAQBQjN56y7v+5z/twtTtaAAAcIwYMUIDBgxQ//791bJlS40aNUqlS5fWGzaaOQ9WHV69enX/Uq1aNUWyf7T4h7P+dPGn8njyvzcNAIgsJMVRaPKq+s4vYWsJ7mbNXnES4Vlbo5csWSnX5+/evchfFZ1XQj23yvT8qsDzqr5O2bFCURMn6sutW/3P/eakkzS3XTvnZNMNR/OdAQA4kvvvl5o2lazo4K67vJ1kAQAIe7t2SR9/7N2++mq3owEAwLF//37NnTtXPXr08O+Ljo52Hs+YMSPP1+3atUv16tVTnTp1dOGFF+r333/P93PS09OVlpYWsISTno17qnTJ0lqVukpz1891OxwAQBAhKQ7XE7bWCt1aoiclTfC3Rk9M7JxLK3Zp9eqH/ZXceSXUfZXkBZ2DO7fq6zfUV80XBLYa2tOtm86rlHuyvrgU9DsDAFAQpUpJL7zg3X71ValrV2879W++kTZscDs6AACKyGef2YhrqXFjqbNdewIA4L4tW7YoIyMjR6W3Pd6QxwVas2bNnCryL7/8Uu+++64yMzPVuXNn/f133lMtDh8+XImJif7FkunhxBLi5zY519mmhToAICuS4giKhK09p0KFZP9zve/1apb3ysoquQc6Fd65JdSPdg7urMn8XSqj0zRB76iv/+fPNW4sT3Ky4mNyi6X4Hek7AwBwNM46y5sQL1NGsuKDa6+VevXy5glescM6AADh2jq9b1/rOet2NAAAHLNOnTqpb9++atWqlbp3767PPvtMVapU0ejRo/N8zZAhQ5Samupf1qxZo3BzaYtLnfUniz+hhToAwK/E4U3g+FmCtkKFnk7LdKsQP54KZt97rVv3qlMhHihTqakzFBd3mfMZeX1OfnNwBybgX9GLKWP1uO4LeOaGzp1VzcroghIndACAwnHddd7k+JtvSj/+KG3cKC1bJl1/vVSypNS/v9sRAgBQSFavliZM8G5fdZXb0QAA4Fe5cmXFxMRoo12QZWGPba7wgihZsqRat26tZXZBl4fY2FhnCWfnNTlPcSXitGzbMs3fMF9tarRxOyQAQBCgUhyFLnvV9/G+V5kyJxRpS/eDmZlqs6JFQEJ8YI0aTnV4MCbEj9QOHgCAY1G3rjRsmDR1qpSSIt1zj3f/oEHSNddI48e7HSEAAIXgww8lqxjr3l2qX9/taAAA8CtVqpTatm2r8Vkuvqwduj22ivCCsPbrv/32m2rUqKFIVi62nHo17eVsv//b+26HAwAIEiTF4bQS3759QkBL8WCS+/ziUUpM7HTE73Cklu7TUlNVcvJkbdi/3/+aN3St/i9hqoJRQdrBAwBwvKKjpccfl848U9qzx1tBfs450uzZbkcGAMBxev/QjfErrnA7EgAAchg8eLBeffVVvfXWW1q8eLFuvPFG7d69W/0Pte+yVunW/tzn4Ycf1g8//KDly5dr3rx5+te//qVVq1bpOmsHFuGuOMl7rP9g0QfKyMxwOxwAQBCgfXqEsyrjw0nWaCeBfKxzVFti1tqVW3V2YVSJ+/jmF88ep+8zjvQd8mrpfv6vv+rbbdv8z2uuxXpJNznpd3s/e01hfo/CUJB28AAAFFZi/PPPpffekz7+WPrpJ+mf/5S+/lo66SS3owMA4Bj88Ye0cKF3bpBLvXONAgAQTHr37q3Nmzdr6NCh2rBhgzNX+Lhx41StWjXn56tXr1a0Xawdsn37dg0YMMB5boUKFZxK8+nTp6tly5aKdOc0Pkfl48pr3c51mrJ6ipLrJ7sdEgDAZVEej/UNC05paWlKTExUamqqEhIS3A4n7FgS29pvByZZY9Sx48qjTrB6E9MDDs1zHeUksY8muV6QhLr3OYGJ7WP5Dsv37lWjWbMC9v1H96iDAsvfWrT4SNWqXaaiciyDCArzzwxA8eBYdhi/i9C1Y4fUtq20fLk3WV6mjHT22dLzz0sFnNoOAMICx7IQ/z08+KD06KNSr17SV1+5HQ0AwEUheywrAuH8uxjw1QC9Nv81Xdf6Or16watuhwMAcPlYRvv0CJZf1fHRt/T2JcSNx3lc0JbeBZ0jO7e5yteufe6ovsP9y5cHJMStqfrKZptyJMSDdV7wI7WDBwCgKJQvL02bJl1wgc1pJ+3c6a0eb9xYuvJKO665HSEAAEdg9QC+1ul9+rgdDQAAKMYW6p8s/kTpB9PdDgcA4DKS4hHMKpRzztUd7VRiH43U1OlZEuI+HqWmzijSObLtOWvWPJ3rz6KjywQ83nHggKImTtTjq1f7973QuLEOJierfOkGub5HXFx9BeO84FaBb5XhSUkTnPWxtrsHAOBoWEX4l1/agDRvgtwqx3fv9uYXLrlEOnDA7QgBAMjH7NnelielS3tHeQEAgLB3ar1TVbNcTe3Yt0Pjlo1zOxwAgMtIiiMbT8hUq3tfm7vMzN3+7XdsTh27e5/Fxs6dNai2t7o6M3PXEd8j2Cr0c6uaBwCgONSsKXXuLP3yizRlipSYKM2cKT3wgNuRAQCQjw8+8K4vusg7DwgAAAh7MdExuvyEy53td359x+1wAAAuIykewbzJ2ZwV3kfbPj0xsXOuFeeJiZ0KWK2e/a9hTIGq1XOvdD/8+gOZmao2bZr6Llni/8mNNWvKk5ysqqVKFUoMx6K4Pw8AgKIQFSV17Sq9fmgGkCeflP73P7ejAgAgFxkZ0ocferdpnQ4AQETpm9TXWX+V8pW27NnidjgAABeRFI9ghZWc9c5z/Wq2ea5fKVAV8/HMkX34cwNVq/Yv/bKvrEpNnqxNWXq5LjrlFL3UtGmhxmAtz7dvn1Dg1ue+z6tW7aocMVP1DQAIRZdeKt18s3e7b19ve3UAAILKhAnSxo1SxYrSWWe5HQ0AAChGSdWT1KZGGx3IPKD3f3vf7XAAAC4q4eaHhztLlFo1tiWfgzHh6UsG23zW1r77aJLB2dm81qVLn6y0tKlKSOiqxMRTjuq1FSr0dCrULSF/NJ9vr/Mm9r3tyK3u/eqNLTV74wL/czolJGha69aKspK2Qoxh/frXs8wNHu38Lgsyv7f9vdi4MbBdz8aN76pBg0eD8u8JAABH8vTT0vTp0vz50hVXSOPHSyU4ywQABFvr9Msuk7J0DQMAAJHhmlbXaN76eXp9/uu6pf0t+d4nBgCEL25XFpFjTZgWt+NJSOf9faNUp84dqlXr1gK/nz3vWD476/zca1RbfRWYbP7+5JN1llUDFHIMltg+/H1NpjO4wH6XR3qP/OYUJykOAAhFcXHS2LFSmzbS5MnSf/8r3XWX21EBACApPV369FPvNq3TAQCISH1O6qM7frhDv278VfM3zHcqxwEAkYf26UUgr4Tp0bTYLk6WiK1QIfmYE7I5v69Ha9Y8rZkz6znJ8sKSW6tyXwv4G/RyQEK8VJS079RTC5wQP1r5JbaPJDq6bB77yxRSdABQdNLT09WqVStnVPWCBYe7cgBNmkjPP+/dfvhh2qgDAILE999LqalSrVpSt25uRwMAAFxQMb6iLm5xsbP9xvw33A4HAOASkuJBljANn+9buIMBLLluSfaFC08PSLZvj6qi0zReKWruf+7jVTcrvXuyYqOjg3I+9szMXXns311I0QFA0bn77rtVs2ZNt8NAkOrXT+rUSdq1y/6uuB0NAACSPvnEu/7HP2wkstvRAAAAl/Rv1d9Zv/fbe9p3cJ/b4QAAXMAVYZAlTMPn+xbeYIC8Ku9vWTJfNWfMCHjuktb1NKTlZSqu+djtz9Wr4POxR9rfDwDh43//+59++OEHPW0TSAO5sFzDiy9KNj3b++97W6kDAOBq6/Qvvzw8nzgAAIhYZzQ4Q3US6mjHvh369I9DU6sAACIKSfEgS5iG9vfN7a9T9HEne7NXou9XSZ2mn/TihlT/voZxcfIkJ6tZYgMVttzatvvmY+/YcaWSkiY464LOGR9pfz8AhIeNGzdqwIABeuedd1S6dGm3w0EQs3nFr7/eu33xxVLnzt526lu2uB0ZACDi/PSTlJZmF2/eViYAACBixUTHaECbAc72y3NedjscAIALSrjxoZHAEqQVKvR0qqQtKRzuCU/7vqVLn6z58zs4c4oflnX72ByurM7UDzpTw3VfwM8nt2qlbuXLqyhYm/bDVerRTjI7a/Lb/lyP5c820v5+AAhtHo9HV199tW644Qa1a9dOK1euLPD847b4pNlNaUSERx+VPv1U2rxZsqYutowdK82eLZUp43Z0AICIa51+6aW0TgcAALquzXV6ePLDmrZmmhZuWKik6kluhwQAKEZcFRYhS3RWqJAcMQlP71zZ2ZPgnuNun26/v6ZNX9FpmpAjIZ7ZvXuRJcTzatteGHOkR+LfDwDB595771VUVFS+y5IlS/TCCy9o586dGjJkyFG9//Dhw5WYmOhf6tSpU2TfBcGlUiVpwQLp+++lN96QqleX/vhD+ve/3Y4MABAx9u+XvvjCu03rdAAAYIVK5WrokhaXONtUiwNA5CEpjkJTVHNlz05LU60/GwXsG920qdMu3RI2RSV72/bCmiO9KFu6A8DRuOOOO7R48eJ8l4YNG+rnn3/WjBkzFBsbqxIlSqhxY++/61Y13q9fvzzf35Loqamp/mXNmjXF+O3gtpo1pbPOkvr3lz74wFugZwly62QLAECR+/lnaccOqVo1qUsXt6MBAABB4qZ2Nznrd399V6n7Dk/PCQAIf7RPR6HxzZVt1dSWPC6MubJbz5mjBbusAv2w3d26qXSMbz7uohMdXTaP/e72fT1SS3cAKKgqVao4y5E8//zzetT6YR+ybt069ezZU2PHjlWHDjZtRu4siW4LkJwsDRpkf5ekW26RFi6USpVyOyoAQMS0Ti+G60cAABAaTq13qlpWaak/Nv+htxe+rVs63OJ2SACAYkKlOAq1+tiSsx07rlRS0gRnfazJ2nXp6YqaODEgIT6gRg2nOrw4EuKH28Hntn+33FLULd0BIDd169bViSee6F+aNm3q7G/UqJFq12YKCBTMQw/ZQAxpyRLpzTfdjgYAENYOHJA+/9y7/Y9/uB0NAAAIItZ51Fct/tKcl5Tpyd4pFAAQrkiKh4HCSGZb9fHMmfW0cOHpztoeuzVX9i1Ll6rWjBkB+1Z37KhXmjVTcf4ei6odfLi2dAcAID/ly0v33efdfuEFyeNxOyIAQNiaOFHats07GqtbN7ejAQAAQeaqpKtUrlQ5LdmyROOWjXM7HABAMSEpHuJzNxdGMjtYqo/3ZWQ41eEvrl3r39csPt6pDq8TF1fsv0dfO3hLhHsdfzv44xWMiXoAkad+/fryeDxq1aqV26EgxFx9tVSmjPT77958BQAAReLjj73rSy6RSjBrHAAACJQQm6ABbQY428/MeMbtcAAAxYSkeDFVTxeFwkpmB0P18Sur/1D8lCkB+6a2bq0l+cxVWxy/x8JqB19YDifqff/rRrueqAcA4Giqxa+6yrv95JNuRwMACEsHD9I6HQAAHNGtHW9VTFSMfl7xsxZsWOB2OACAcEmKjxw50qkqi4uLU4cOHTR79mwFu2Cpni6OZLab1cdWaVhpynhdv3xTwP7M7t3VJTGxWCr6j/R7PN528IVtx44pAX8vvY8BAAgNgwdLJUtK48ZJ33zjdjQAgLAzdaq0ZYtUqZKUnOx2NAAAIEjVTayry064zNkeMWOE2+EAAMIhKT527FgNHjxYw4YN07x585SUlKSePXtq06bAJGiwCYbq6eJKZrvVJvzPPXsUPWmStmX4Ple6U09pgnooPf1wC/UjJb6Pt6I/lFqSp6b+oo0b3wrYZ49tPwAAoaBJE29i3Pz739LOnW5HBAAIK1984V336kXrdAAAkK87Ot3hrD9Y9IHWpuW8Hw0ACC9FnhQfMWKEBgwYoP79+6tly5YaNWqUSpcurTfeeEPBLBQSpYWZzC7uNuF3LFumZtk6BoxTT52n73IdfJBX4rswKvrt91Wt2qFerodUq/avoKkMzyotLfeq8LS0acUeCwAAx+qBB6S6daUVK6QbbrDOMW5HBAAIC3ZA+fJL7/aFF7odDQAACHLtarbTqfVO1cHMg3pu1nNuhwMACOWk+P79+zV37lz16NHj8AdGRzuPZ8yYkeP56enpSktLC1jc4lb1tJvJbPtulvS3KvmiahO/9cABRU2cqBF/H37/O/WMJug0xWp/roMP8kt8F0ZFv73Pxo3vBOzbuPFd/+/geFqzF7aEhG557O9S7LEAAHCsypaV3n9fionxrt980+2IAABh4bffpJUr7eJWOvNMt6MBAAAh4K7Odznrl355SVv3bHU7HABAqCbFt2zZooyMDFWrVi1gvz3esGFDjucPHz5ciYmJ/qVOnTpyU3FXTx+rwprz+njbkB/Ja+vWqfK0wIrmrV26aHCzi/IdfJBf4ttb0R+V7WfRR1XRn9/7e38ndQ/9TuoW+u/kaCUmnqJq1foF7LPHth8AgFDSpYv06KPe7UGDpN9/dzsiAEDYtE4/6yypTBm3owEAACHgvCbnqVX1Vtp9YDfV4gAQ5oq8ffrRGDJkiFJTU/3LmjVrwibhHOwKow15XvZnZqrclCka8Oef/n2Da9eWJzlZFUuWPOLgg6NvZX90PVjzev/o6DJKSRmQ5f08zmO3K8ZbtBij1q1nq1Gj/zprewwAQCi6+25v3mLvXunqq6XM7GPUAAA4GrROBwAARykqKkoPdHvA2X5+1vNK3ZfqdkgAgFBMileuXFkxMTHauHFjwH57XL169RzPj42NVUJCQsCC4lFYbciztxn/eft2xU6erF0ZGf59Ke3b65nGjQs8+CC/VvbeuLMnwT1HFXde779v34pc3zs1NWfr/+JmleF16txGhTgAIKRFR0tjxkjlyklz5kivu9uQBQAQylavlubN8x5cevVyOxoAABBCLm5xsVpWaanU9FS9OPtFt8MBAIRiUrxUqVJq27atxo8f79+XmZnpPO7UqVNRfjSOUu5tyPOrxs6/9fq6da+r+/z5OmPhQv9zelSooMzu3dW0dOmjji+vavKjryIv+PsfOJD7HDJ57QcAAEevRg3poYe829dfL51xhrRqldtRAQBCzldfededO0tVqrgdDQAAx2zkyJGqX7++4uLi1KFDB82ePbtAr/vwww+dqueLLrKpKnE0oqOidX+3+53tETNHaGf6TrdDAgCEYvv0wYMH69VXX9Vbb72lxYsX68Ybb9Tu3bvVv3//ov5oHIXt27/Pticqx9zeBW29vlq1VOvPRpqcerjVzISkJP2YlOScmB2r3KrJ86siP973L1myUq7Py2s/AAA4Njan+KWXSh6P9PPP0mmneQv+AAA46vnEaZ0OAAhhY8eOde6nDxs2TPPmzVNSUpJ69uypTZs25fu6lStX6s4771S3bt2KLdZw0/uE3mpSsYm27d3G3OIAEKaKPCneu3dvPf300xo6dKhatWqlBQsWaNy4capWrVpRfzQK6HBSO2ur8GhVqNDzqFuvv6BB6qe3/T9LjM5Q+qmnKrlCBRWVI81JfqwSEzvnUj0fpcREuhwAAFCYSpaUPvlEWrpUatRIWrFCsuKG9HS3IwOA8Kwqs4HrdtO8QoUKztKjR48CV6EFpR07pEmTvNskxQEAIWzEiBEaMGCAU1DWsmVLjRo1SqVLl9Ybb7yR52syMjJ05ZVX6qGHHlLDhg2LNd5wEhMdo4eSvW3Mnpr+lLbuoVsoAISbIk+Km0GDBmnVqlVKT0/XrFmznAv0UJHbPNnh5njnE7cW5qlK1GmaoM90qX//XXpSX2T2VOb+dSpq+c1Jfjzv2azZq1n+N4l2HhfmZwAAgMMaN/ZWileuLM2fL911l9sRAUB4VpVNnDhRffr00YQJEzRjxgzVqVNHZ511ltauXauQ9N130sGDUsuWUhObYgsAgNCzf/9+zZ071xms5hMdHe08tuN1Xh5++GFVrVpV115bOIVCkaz3ib2VVC1JaelpemLaE26HAwAIxaR4qMo+T7Y9DkfR0WWPa17u1zem6iIdalV3yFfqpXP1v6NKrgfj4AZvFfqqQ1XoqwqtCh0AAOSubl3p7UNNZ154Qcrn3g8A4Biryt577z3ddNNNTje35s2b67XXXlNmZqbGjx+vkG6dzhyqAIAQtmXLFqfqO3uHVXu8YcOGXF8zdepUvf76604XmIKywrW0tLSABYfnFn/s9Mec7Rdmv6C1aSE6YBAAkCuS4gWcJ9vWKSnXh13FuCX658/vmKNSvFq1fx2xIjo9M1NlJk/WoBWb/ft660NN0Gkqp13+fdHRZRTKgxuKogodAADk7ZxzpGuuOTzfuBX/AQAKt6osqz179ujAgQOqWLGiQo7NtfE/G5BN63QAQGTZuXOnrrrqKichXtnabRXQ8OHDlZiY6F+sYwwOO7fJuepSp4v2HdynRyY/4nY4AIBCRFK8iFqKh2bi/7CNG9/NdwDAT9u2KW7yZO3JPPzad3WlbtDoHM/NzNwtt0TK4AYAAMLN8OFSYqI0b57UubM0bpx04IDbUQFAeFSVZXfPPfeoZs2aAYn1kKkos7nEd+2yNl9Su3ZuRwMAwDGzxHZMTIw2btwYsN8eV69ePcfz//rrL61cuVK9evVSiRIlnOXtt9/WV1995Wzbz3MzZMgQpaam+pc1a9YU2XcKRVFRURp+xnBn+7V5r+n3Tb+7HRIAoJCQFM9nnuzjaSkeuon//AcAeDwedZs/X2f++qt/31kVKmht079US7nfcFm7dqTcEgmDG/D/7d0JnE31/8fx98xgrDPG0iAhkSxlJ5QtvyjtJfnVL+RPC6XSpk3Lz4/2Rf1a/Cp+baTSnl8SSiGEkqUUoezLWGIwc/6PzzndWZiVmTlzz309e5zuveeee+Z7vveYz73zOZ/vFwAQRMccI732mlSxojRvnlc93qkTiXEAKGijR4/WhAkTNHnyZJUuXTr8KspsPnFz9tlWIu93awAAOGKlSpVSy5YtM01nEprepF27dodtb1Og/PDDD1q0aFHact5556lLly7u/ezidWxsrOLi4jItyOz02qfrooYXKcVJ0U3/u8n9mzgAIPzxjTEbNlR2gwYvuolwT4waNHghUENoe3OJZ+fwCwCW7dmj6JkzNSspKW3dzGbN9L+mTVWpUnc1bPimKle+8LA9bdnytpKS5sm/ixuiDlkbHaiLGwAACKpzzpGWLJEGD5bKl/fmF3/mGb9bBQDhXVWW0aOPPuomxT/77DOdcsop2W5XrCvKPv7Yu+3Z0++WAABw1G6++WZ3OPTx48dr2bJluvbaa7Vnzx7179/fff7KK69047Kxi9maNGmSaalYsaIqVKjg3rckO47cw90eVqmYUpr661R9/PNfnzcAAGGNpHiu0ofdDprU1PR5vzOLPuwCgOt//lmNrEzrL1VKltT+jh3VsWLFtDm7ly3rra1bJ2e5x507v1bxwZV9AACEi2OP9RLhTzzhPba//zRtKk2a5HfLACA8q8pCHn74YT344IOaMmWKWuUy7HixrSj76Sdp5UqpZEkpm6HfAQAIJ71793YvWrv33nvVrFkzt+LbYnVompQ1a9Zo/fr1fjczIpxQ6QTd2PZG9/6wz4Zpf8p+v5sEADhKJY52B0GVPhd1KIHquHNRJyR0D0y1ePoQ8RkT/lGqV+8Z9zjNlv37VfWbbzK9btxJJ6nvXxUHOc1LnlFcXAf5N3z6oUlwxx0+PSjvIwAAkeCqq6RXXpHsY4nN4nLZZdLBg1KfPn63DACKR1VZ37593eR2mzZt9OSTTx5WVXbssce6w6Cbhx56yP1j+xtvvKE6deqkzT1evnx5dwkboSrxjh2lChX8bg0AAAViyJAh7pKVGTNm5PjacePGFVKrItNdHe/SuMXj9NPWnzRm7hgNaz/M7yYBAI4CleIRPBf14UPEe8OMr1x5nVv5PXrppMMS4ts7dEhLiOc+L7n/ImFueAAAIoFNE/vZZ15S3BLkqanSFVdIEyf63TIACL+qsueee0779+/XJZdcourVq6ctto+wEppPnKHTAQBAIYiLjdOoM7yLCkfMGKE1SWv8bhIA4ChQKZ6vKurgJVOrVx/gVoUnJc3WsmWXuce7XyXVUx/r4KaSadvdftxxGn3CCXnsp8Nt3fqx4uNby6/Ev1X520UNQZwbHgCASFGunGQjAbdt6z1++WXp73+XFi+WRoyw4X39biEAhEdV2erVqxX2du2SZs707pMUBwAAhaRfs356eeHL+nrt1xo6Zagm9856+lAAQPFHpXieq6iDnUzdv3+tm9iep1bqrs90UOkJ8ZVt22aZEM+6n7JWqlR6dbkfif9TT12tpk2nu7f2GAAAhHfV+Nix0tVXexXjNhrwBRfYtC5+twwAUGQ+/1w6cECy76r17WJtAACAghcdFa0XznlBJaJL6L3l7+mDFR/43SQAwBEiKR7hydT1619yh0pf+cswDdYzuk2PpD3XVnO0sdFunVCmTJ77qXnzb7PcpkqVc+S/Q+cWBwAA4ZwYf/556Z13pLJlpSlTpH79/G4VAMCXodOjvKnAAAAACkPjYxrrlna3uPeHfDJEu5J3+d0kAMARICmeC6uETkjoHMgK8X371mnFioFapVrqqulaqsZpzz2t6zVaw5WcvDJf/RQbWz2LZ6Py3a7t26e7twWZ+F+8uKt7a48BAEAwXHSR9NFHXpLc5hdftszvFgEACp3jMJ84AAAoUvd0ukfHVzxea3eu1W1Tb/O7OQCAI0BSPIIlJX2jJzRUV+mVtHWVtFWf6wydrCXu49Kl6+V7n4dz3DnL/Uhge4n/QRnmPE915xcvqIQ7AADwX5cu0rnneveffdbv1gAACt2iRdIff3hDhXTs6HdrAABABChbsqxeOs/7W/XzC57X1F+m+t0kAEA+kRQPAEvwbtz4lrvkNdm7af9+VVt2jD7Q+Wnr7tRIvaNLFJOWQJZKlCifr3bs2eMl04tLAnvv3p8z7C8kRXv35q0CHgAAhIfrr/dux4+3i+z8bg0AoFCFqsS7dbMruf1uDQAAiBBdju+iIa2HuPcHfDBAO5N3+t0kAEA+kBQPc15ldS0tW9bbXex+btXVz6xbp8RvMld0f6hz9Dd9fsiWUSpTpl6+KrzXrHkwi2ejFR/fzpcEdnR01kn96OhyR7xPAABQ/HTtKjVtKu3e7d3fuNHvFgEACs3HH3u3DJ0OAACK2Ohuo1U3oa47jPqNU270uzkAgHwgKR7G0iurnQxrHXddVtXV+1JSFDNjhq5fmZ5kHlppu6arq8prz2HbN2gwNk9zqR9e4Z1RjBo0eDFP+ylTpn4Wp2RMnhPzWUlN3Z3N+sOPFwAAhK+oKOndd6WaNaXly6VbbvG7RQCAQrF1qzRnjnf/7LP9bg0AAIgw5UqV07jzxylKUXpl0SuauGSi300CAOQRSfEwlnVltUk9rLr6061bVearrzJt/Wvbtrq96ja3IjwrO3Z8dVTtOOGEJ3TqqatVvfqAPO3HEueJif/ItC4x8Yo8JdSLMtEOAACKp7p1pcmTvftvvCH99JPfLQIAFLjPP5ccR2rSxLsSCgAAoIidXvt03Xn6ne79QR8N0qrtq/xuEgAgD0iKhzEv4Zt1QvvgQa9C2nEctV6wQGf/8EPac+dUriync2dVj9qaQ4W3DTs6XklJ8/LYjsNPpW3bPtG2bYcOyZ7b3OivHtKG145qTnFLqFuluiXC0yvXXziqRDsAACi+WrXyRtNNTZXuvtvLmwAAAuSzz7zb7t39bgkAAIhg93W+T+1qtnPnFe/zTh8dSDngd5MAALkgKR4GLCm8ffv0w5LDltitWrVXNq9ZqSW7dyt65kzN37Urbf2s5s314ckn51Jpnm7r1r/mastnhbfZvn2qfvqpv+bMyVtVdmHMKW6sUt0q1ps2nZ6vynUAABCe7rvPG0590iTppptIjANAYNgv9P/9z7t/5pl+twYAAESwEtEl9MbFbyg+Nl5zf5+rOz6/w+8mAQByQVK8mFu//iXNmVNbixd3dW/tcUY1a2Y9YeY9O1rp5Pnz0x7XKFVKBzp2VIf4+FwrvDOKjo49ogrvzM//oj/+GOfrUOeWuE9I6EyFOAAAEVItPnasd/+pp7y5xgEAAbBsmfT77/YFTzr9dL9bAwAAIlydinX08vkvu/cfn/O4JiyZ4HeTAAA5IClejFmyOfPw5qlaseLqTBXj8fGtFRfXPu3xNiWoi6Zr/NaDaetea9hQv7dvrxLR0bkMLX64vCSk81Zx/r6vQ51nV20PAACCacAA6a67vPs33yz9+affLQIAFNjQ6R072pdVv1sDAACgixpepNs73O7eH/DBAP2wMX0aUwBA8UJSvBjLy3DiluTduXO2e/8dXaSLlbkUasdpp+nyxMRchxavXv2aLJ6NVnx8u1zbmZeK88qVz891P4U11Hlu1fYAACCY7rxTqlVLWrPGuw8ACHMMnQ4AAIqhkV1HqlvdbvrzwJ+6cOKF2vrnVr+bBADIAknxYiwvw4mvW/eUklXSrQ5/Rtenrb8lUXI6d1Z8iRJ5+lnr11uFdmZ1647OU5V2XirOy5VrnKd2FPRQ53mptgcAAMFUtqz073+nD6P+wQfZb5uSYp8bmH8cAIot+yU9c6Z3v3t3v1sDAACQJiY6RhMunuAOp/7L9l/cxHjywWS/mwUAOARJ8WIst+HELbH79rqv1EN/XS3/lzd1mW6rsjvPPycp6Zsshz+vUKF1nvcRqvCuUePaLJ/fufNrFddqewAAEFw9e0o33ujd79dP+vhj6Z//lD75RDpwwFs/dap9lvFG4rX5yDdv9rXJAICszJplX/C8X9iN837RNQAAQFGoXLayPurzkeJi4/TVmq/0fx/+nxyuugaAYoWkeFhIr3IOsYB66uKfNVyj09Z10CxNVxdV00bt2jU/T3u2ocSXLeud5XNr1jySr1Z6Fd5nZ/Nc7nOT+1VtDwAAgu2hh7xk9/bt0jnnSPfc4yXLmzWTHnxQOu+89ET4d99JfftKBw/63WoAQJbzidvQ6VFRfrcGAADgMI2Paay3e72tmKgYvfb9a7pvxn1+NwkAkAFJ8WLKqsA3bnzrr6G/Q1eUOe7Q3/O3/aLomTO1eG/6HwKe0WD9U/ekPU5N3Zenn7FixcBsn9++/RMlJc3LV7tLlCiXzfryKo7V9gAAIPhKlZImTpTi4rzHHTtKlStLS5dK997rjch77rnSnDn22UH69FOvEPHVV/1uOQDgsKQ4Q6cDAIBi7G8n/E3/7unN4/XAlw9ozNwxfjcJAPCXvE04jSJl1duZ58FO94hu0iffr017nKgNel2XK+aQbR1nfx6HTc95CJdt2z5WfHzrI6jMTi02ldk2tHtCQnd3yHRrBwlxAAAiT9260oIF0oYNUocO0tatXsX4b795leJXXeUlz//7X+naa6UtW7x1DRpIbdr43XoAiHD2y3vxYu9+t25+twYAACBHg1oO0vpd63XfzPt0w5QblFAmQVeccoXfzQKAiEeleDHjVW8fnhDfpgR10XR9op5p6x5PmKcJ6nNYQtxERZXK9WcdOLA1121KlqymIFRme0O7d/a9HQAQrurUqaOoqKhMy+jR6VN4AOGgXj3ptNO8UXerVJGee86bW/yaa7yEuOnVy8u92K0Nod6jh9S/v3TTTdLXX/t9BAAQoaZO9W5btJCqVvW7NQAAALm6t9O9uqHNDe79fu/10ztL3/G7SQAQ8agUL2b27v35sIT4JF2if2twpnVJp52m5O279eP2rPcTE1P6sGS77dsqufOeGI5SlSrn5O8AqMwGgMB64IEHNHBg+rQbFSpU8LU9QGEpUUIaO1ZatkxaskQaN85b/9RT0u23S//6F9PZAkCRYuh0AAAQZqyY4IkeT2hH8g79d/F/1fvt3nr1wlfV5+Q+fjcNACIWSfFiJuPw48kqpR76X6bn++kVPdl8iOJKlNC65PRh1A9VqVLPbIZjj3YruS1xXbJk5Rxa4m13dAntnIdmBwCEF0uCV6uWvxFEgHAVHy999530xRfS7NnSihXShAmSDZBgQ7FnuD4EAFCYUlPTk+Jnnul3awAAAPIsOipaL5/3sqIUpfGLx+uKyVdof8p+9W3W1++mAUBEYvj0YiY0/Pg36nBYQnyCequv/qutWz92Hx84sD7b/cTGVs9mOPZUrVhxtbu+dOnjs3xtvXrPqXnzOSpduq67XX5ZEn7OnNpavLire2uPAQDhz4ZLr1y5spo3b65HHnlEB21saSDASpb0ihLvu096800vIW5uuEH64Qe/WwcAEcKG7Ni0SSpbVmrXzu/WAAAA5EtMdIxePv9lDWwxUKlOqvq/319jF4z1u1kAEJFIihczqY6jHutO0V36Z9q6jpqp6eqiRG1yH5cq5VXpVap0brb7SUqane1w7FKKO7T5vn2rsnztnj2LtHDhqUeU1M4pCQ8ACF833HCDJkyYoOnTp+vqq6/Wv/71L9122205viY5OVk7d+7MtADh7NZbpbPOss870qWX2mcmv1sEABHAhuwwp59uV3/73RoAAIAjqhh//pznNbj1YDlyNOijQRo9a7Qch5FWAaAokRQvRhbt2qWYmTP1fYa/sP5b1+p+3Zdpu9jYmpmqwfM2HHtGMe5c39lZv/6FI05q55SEBwAUL3fccYc7x1VOy/Lly91tb775ZnXu3FmnnHKKrrnmGj322GMaM2aMm/jOzqhRoxQfH5+2HHfccUV4dEDBi46Wxo+XatSQ7J/GSSdJDz0k8XcMACiCpPgZZ/jdEgAAgKNKjI85a4xuaXeL+3j4tOEa9OEgHUg54HfTACBikBQvJvotW6bmCxakPa6h3/W5zlBDecmIjHbtmu/eJiV9k83eohQf3y7TcOyWCPfEqEGDF9z18fHt3W0Pfe3h8p7UPpIkPADAH8OGDdOyZctyXOra5MlZaNu2rTt8+urVq7Pd//Dhw5WUlJS2rF27thCPBigaVatKb71lI/ZI69bZxSXSjTdKu3d7c48vXEiSHAAKjE3VMnOmd79rV79bAwAAcFSs+OCRMx/RUz2ecpPk/1n4H/V8o6eS9iX53TQAiAgkxX22PjlZUTNmaPzGjWnr7tX9el1XKOawimvP/v3eMOrZqV79ajfpnf54gE49dbWaNp3u3trj9IT52AynQbTq1n34qJLaOSXhAQDFS9WqVXXSSSfluJQqVSrL1y5atEjR0dE65phjst1/bGys4uLiMi1AEHToIP3+u/Tkk97jp5+WKlSQ2reXWrSQmjSRVmU9Sw0AID/swnGbfqViRalZM79bAwBAkXj22WdVp04dlS5d2r0g/dtvv81223fffVetWrVSxYoVVa5cOTVr1kyvvvpqkbYX+XdD2xs0ufdklS1ZVlN/narTXjlNv2z7xe9mAUDglfC7AZHs0TVrdOuvv2Zat7DGZ9rxx4wcX3fw4Gb3Nr3SO3M5Uu3adx32GktKZ5WYtgR5QkJ3txLcEt+2TcmSCe6Q6VYhfiRJ7az2CQAIX7Nnz9bcuXPVpUsXVahQwX1800036YorrlBCQoLfzQN8Ubq0NHSoVLmydPfd0m+/eTmb/fulpUu9Oce//lrK5roSAEB+hk7v3FmKCV14DQBAcE2cONGdvuz55593E+JPPvmkunfvrhUrVmR5UXqlSpV01113pV3U/tFHH6l///7utvY6FF/nNThPX/b7Uue8eY6WbFqili+21LgLxumCky7wu2kAEFhUivvgz5QUtzo8Y0L8wTp15HTurNiU9Irx7JQufUK2ld4NGvwn30lo2z4hoXPa67KrLD+afQIAwpdVfE+YMEGdOnVS48aNNXLkSDcp/uKLNjIIENmuuMKrCrfFBv5Ztkyya0Xmz5caNZJ69fKS5xs2+N1SAAjjpDhDpwMAIsTjjz+ugQMHuontRo0aucnxsmXL6uWXX85y+86dO+vCCy9Uw4YNdcIJJ2jo0KE65ZRTNGvWrCJvO/KvZY2WmjdwntrVbKek5CRdOPFC3frZrcwzDgCFhErxIvb+li26YMmSTOvWnHqqjrNyI6vLjqmQ6z4qVGhZ6FXZ2VWWAwAiT4sWLTRnzhy/mwEUW1FRUp063v1ataTXX/eS4b/84i3mtdekt9+WunTxtakAED6Sk6XQH/RJigMAIsD+/fu1YMECDR8+PG2dTVvWrVs3d8S23DiOoy+++MKtKn/ooYcKubUoKDXjampGvxm64/M79MScJ/To7Ec15/c5evXCV1Wn4l9fNAEAxbtS3KrI2rdv717JZnOaRLpUx1Hjb7/NlBDvVbWqWx0eSoibxMTLc9lTlOLj22WxPvMQ6gAAAPDHWWd5leGTJnnzjTdvLm3b5g2p/scffrcOAMKEXZC3b599SfaG3gAAIOC2bNmilJQUJVrsy8Aeb8hh6KmkpCSVL1/eHT69Z8+eGjNmjP72t79lu31ycrJ27tyZaYG/SsWU0uPdH9fbvd5WXGycZq2ZpZOfO1ljF4x1L3YAABTzpLhd2darVy9de+21ikT79q3T9u3T3duFu3YpZuZMLf3zz7Tnv23RQm81bnzY6+LjW6cNj56VunUfzlTBvX79S5ozp7YWL+7q3tpjAAAA+Kt8eemSS6Trr5e++UZq1sz+yCX9/e9SSorfrQOAMBs63YbkAAAAWapQoYIWLVqkefPmuYVqNif5jBkzst1+1KhRio+PT1uOO+64Im0vsndxo4v13aDvdFqt07R7/24N+miQzn7jbP2+83e/mwYAgVBoSfH777/fnW/05JNPVqTJmKg+b86/1WLBgrTn6pUpo4OdOql1XFyWr01Kmqd9+/4aZzMLe/akV5pbwn3FikFWh/7XmlStWHG1ux4AAADFgw0KNHGilyifOVN68EG/WwQAYWDaNO+WodMBABGiSpUqiomJ0caNGzOtt8fVqlXL9nU2xHq9evXUrFkzDRs2TJdccomb+M6ODc9u1eWhZe3atQV6HDg6J1Q6QTP6ztCjf3tUsTGxmrJyihr/u7Ge/fZZpaRyhTUAFMukeHGv3i7Mn2GJ6i1KUBdN11SdmfbcpEaN9HPbtorJ4Sr3nTu/ynH/GzeOdxPnZu/enzMkxENS3PnFAQAAUHyceKL0wgve/QcekG65xRsVGACQhd27pblzvfskxQEAEcKGP2/ZsqWmhS4Ms7/8pqa6j9u1y2o6zazZa2yI9OzExsYqLi4u04LiJSY6RsPaD9PCqxeqdY3WSkpO0pBPh6j12NaavTb3+eUBAGGQFC/M+UyKaphxS1S/qUvVS29nWr+miXTJMcfk+vq4uNNz3Wbnzq/d2zJl6rtzjGcWpTJl6uWz1QAAAChsNnT6sGGSTQn32GPSuefaZ0e/WwUAxdCsWdLBg1Lt2tLxx/vdGgAAiowNfT527FiNHz9ey5Ytc6cm3bNnj/r37+8+f+WVV7qV3iFWET516lT9+uuv7vaPPfaYXn31VV1xxRU+HgUKSsOqDTV7wGw9e/azqli6ohZuWKj2L7dX//f7a91ORosFgEJNit9xxx2KiorKcVm+fLmOVGHNZ1JUw4zvSUlRpcVRelFXp60boP9ourqpavm8JaptTvHExL45bhMX1yGHZ5lrDQAAoLh69FHpgw+kcuWkzz+XzjxTWrXK71YBQDHDfOIAgAjVu3dvPfroo7r33nvd4dBtrvApU6YoMTHRfX7NmjVav3592vaWML/uuuvUuHFjdejQQe+8845ee+01/d///Z+PR4GCrhq/rvV1WjFkha5qdpW7btyicao/pr5um3qbtu3d5ncTASBsRDmO1arkzebNm7V169Yct6lbt6471EvIuHHjdOONN2rHjh15qhTPOLSLVYpbYtzmNjmaYVxsyHSrED9U06bTlZDQWQVh8ubNuujHHzOte0u9VFXb1aDBC6pefUC+9rd580f68cfzJGV+e6pU6aUmTd4qsuMCABwdi2V2odfRxrIgoC+AdF99JZ19tjdCcIUK0uzZUuPGfrcKQG6IZUXUD61aSQsWSK+9Jl1+ecHvHwAQ8Yjp6eiL8DJn3RzdOvVWzVozy30cHxuvW9vfqiFthii+dLzfzQOAYh3LSuRnp1WrVnWXwmLzmdhS0LxhxqMPmX87pkCGGU91HDWeN0/L//wzbV2fY47Ry3XjtHfvJPdnlC5dM9/7rVr1HDVoMNataLd5wq0CvFat4apbd2SRHBcAAAAKz+mnS4sXS336SN9+K116qTRvnlS2rN8tAwCfbd8uffedd79LF79bAwAAUKycWvNUfdnvS3268lMNnzZc32/8XndPv1sPf/Owrmt1nYaeOlTVylfzu5kAUCzlKymeHzaUy7Zt29zblJQUd6gXU69ePZUvX15FyZLSDRq8mCHBHONWbx9JsjqjBbt2qZVdvZ7B/JYt1dLKff76uUfDqssTErpr796VWSbXC+u4AAAAUPjq1pU+/NBG+ZGWLpXatZMGDpSio6WNG6VPPvFyQyecID3+OJXkACLE119LNqBd/fpSjRp+twYAAKDYsWlsz65/tnrU66EJSyZo5FcjtXTzUo3+erSemPOE+jbtq+vbXq8mxzTxu6kAEL7Dp+dHv379NH78+MPWT58+XZ07d/Zl6BabQzy7BHN+Xb50qd7YtCnt8Ully+rH1q0V7cN8ZwV5XACAgsUwZOnoCyD7/M8FF0hbtmS/jc1O9Omn3vS6APxDLCuCfrjtNumRRySbC3Xs2ILdNwAAfyGmp6Mvwl+qk6qPfvpIo2aNcodXD+lYu6MGtx6sC0+6UCVjSvraRgAoDrGs0JLiQQ3I6/bt03Fz0gOLebdxY11YiMPKAwDCV3GMZX6hL4Ds2bWWo0ZJ69Z5j21GoTPOsFGWpAcflKZOlVq0kObPt6oAv1sLRC5iWRH0Q9u23rwS//2v9I9/FOy+AQD4CzE9HX0RHJbq+WrNV3p67tN6b/l7SnFsdFkpsVyi+jTpo380/YeaV2vuVpoDQJCQFC8Eo377TXeuWpVp3e7TT1e5mBjf2gQAKN6KWyzzE30BHBmrIK9TR9qzxxtu/Zxz/G4RELmIZYXcD7t3SxUrSikp0urVUu3aBbdvAAAyIKanoy+Cad3OdXpxwYvusnHPxrT1jao20hUnX6HLT7lcteJr+dpGACjqWBZdYD8xwHYfPKioGTMyJcQfqltXTufOJMQBAABQqKpUkQYP9u736yfZDEV79/rdKgAoBLNnewnxWrVIiAMAAByFmnE19UCXB7T2prX6sM+HurTxpYqNiXXnHr/ziztV+8naajO2jUZ+OVJLNi1xq8wBIOhIiufinc2bVWHWrEzr1rVrp9vsSzoAAABQBO64Q2reXNq61UuMV68uvf++360CgAI2c6Z326mT3y0BAAAIBJtL/JwTz9HESyZq4y0b9dJ5L6lznc7uc/P+mKe7p9+tk587WfXG1NNNU27SZ798pj8P/Ol3swGgUJAUz0aK46j+3Lm65Mcf09ZdkZjoVocfa5M8AgAAAEUkIUGaM0f65z+9AsqkJKlXL2niRL9bBgAF6MsvvduOHf1uCQAAQODEl47XVc2v0vS+07V+2Hq9eM6L6lm/p1tB/uv2X/Xk3CfV/bXuSngoQZ3HddaDMx/UN2u/0YGUA343HQAKBHOKZ2Hezp1q8913mdZ917KlmleoUGRtAAAEA3NzpaMvgIJx8KB0xRXpCfHLL5eeflqqVEkRY/t26b//laZOlZKTpdNOk26/XSpdWhHBvsE99JD0++/SvfdKVasqsPbskX79VTr5ZBULxLJC7Id9+6T4eGn/fmnFCunEEwtmvwAAZIGYno6+wO79u90K8Q9/+lDTfp2mtTvXZnq+bMmyal2jtdrVbKd2x7Vzb6uWC/CXEACBjWUlirRVYaD3jz/qrc2b0x43KVdOi1u1UnRUlK/tAgAAAEyJEtJrr0nHHy89/LD0+uvSF19IH3wgtWqliHDppdLnn6c/tvtvvCENGCBdf71UpkzRtCM1VfrkEy8pX7Fi0SXEhw6VxozxHtvFEVddJd1wg1SjhsKC9dtnn0mNG0slS0rPP+9d4GDHYe9hRgMHSm++KQ0fLo0cKfG1LMDmzvUS4tWqSfXr+90aAACAiFG+VHld1PAid7EaypXbVmraqmnu8sWqL7Rt7zbN/G2mu4TUTair5tWaq2liUzWr1sxdbB7zKD6wAyjGqBT/y9p9+1TLxqTM4L0mTXR+lSqF+nMBAMHGFdfp6AugcHJINsf48uVeUvaVV6Szz5ZKlZJSUqRzz5UOHJDeessbgj2nalx77YUXSscem/U2O3dKPXp4CU1LXlqyMi9/7+jb16to/vDDgklWW1vtWK1iftQoyX6dPPCAtHGj9/xll3lJ1Lywb0J5OQbbzpboQyafevVV6corpSZNpP/8R/rf/7yLFqyS34a5z2jePGnZMq+yPyYm5yr4Ll2kE07wEt+HJrrtAoC//c1rt10YYVXUpm5dyQa7sv7w4+9Qdl7Yz7XF+sou1ihbVjrrLO99t/PRjtu2u/Za6cUXpXLlvHPVjtnY8zaldIcO3mN7jfVnyNVXe++1zWZl25Yvf+Tv6ZEilhViPzz4oDf0gV31wtwQAIBCRkxPR18gJ6lOqpZvWa7Za2dr9jpvWbp5aZbbJpROcJPjjas2VoMqDdSgcgP31pLl0VHM5AvA/1hGUlzSP1ev1j2rV2dat+f001U2p79WAQCQB3y5TEdfAIVj1y4v8fj1197jBg28+z/84CVXTcuW0vTpks0GZMlkm5O8cuX0fdx5p5dgrl5dGjZM2rJFOvNMKTHRG8E4VJ3+j3+kv8aGbO/d20tQW2IzK0uXetXA5sknvSruM86Q1q6VnnpK6tkz69dZG3fskLK6PjWUFD7uOOm337wEqG1rSVirlrakq1XOh449O2PHeu2xCvOLLpJWrvTWWULW+tMqmI3tr317ads2acoUL/kcct55XrL/UNaPltOzZK9VRFvC/p13vITtiBHSffd529ljO4Y///QeH3OM9N573gUHxpLKdmGDDZVeu7a3bvBg6d//lv7v/6Rnn/W2v+02bz82hL71RefOXl7RjssKb595xuuzrl29n2ntsb61Y7Pt7efmh+3j8celk07y3kN7P+0ca9ZMevddado06YILvG3t59h5Y31r21gbJ0/OvL/mzb0h4K2v7JwbP17q3l1asCDn0Q+aNvWO085Du4jAXHed9Pbb0i23eP0fGgTsjjukevV01IhlhdgPdpLaP3A7Ye1EBwCgEBHT09EXyK8d+3ZowR8LtHjjYi3asMhdlm1ZpoOpB7PcvkyJMjqx8olugrxOfB3VrlhbteNrp91WiGXaWgBHh6R4Huw6eFBxs2ZlWvdI3bq65dCyDgAAjhBfLtPRF0DhsSpuS7TaPNtbt3qJVEsaW/I05MYbpSee8CrLLeloCcW77/aqw60aedOmrPdtSXZLclri3PYfYlXTllS1/Vgey5Kf8+d729hzo0d7ydxQAtgSxVZZ3a1b+j769/faZNMIZ2RJVEtWP/ecNGiQV4FtyVZL2Ns+/vlPrxrb7mc0ZIiXKLaf9cILXsLW2mL7+vZb6dZbveOsWdNL4P7xh5eEtemLzz/fq1I2lgT/9FOv6vqrr6SOHb31NqqzJXZ79fJ+viWTLVkeYlX6VrltlfvZsSS+JdftogNr4zXXpD9nFdXW34sWZX6NfT2xPrakbp060po10kcfpV9UYCMG2BDudjFBRnaNr82zbtX1xo7DEuJ2vHZRROgCiVBy+dAKd+tzG5bfLmSwfrI+s2O25LUlrY0NtmUJ/0ce8R5bQt6Ow/ovO3aRhVXW2zdRa5u9xzadtPX7kiXpF1FYpbi953acdv5aX/3yS9Z9aklwq0DPeNFCRva1L1SBfjSIZYXUDzakhV1hY1eI2BU9NvwCAACFiJiejr5AQUg+mOxWkIcS5D9t/Ukrtq7QL9t+0YHUAzm+1irM61Sso1rxtVSjQg1VK1/tsCWxXKJiS8QW2fEACC8kxXPx1qZN6m2lKxn83q6dathYfAAAFBC+XKajL4DCZ8nUU0+VkpPT11ky0RKMliC1ZKYlYy3ZGGKJyG++8e63bu1VfVvidcYML8FuyUqb3tcSsbZf24cl261COcSSqlY5nHHfNtS6VfpapW4ogW5Ds9tQ6pZ4tepi+yZiCerbb/eqoi1Zaglt20+IFY3ec49X9WsJXhsGfv16L6l66PzTto0dTygpbT/HKtot4WsV0yE2bHcoUWysMvzQJO7JJ3uV5zYkuSXnDxU6Fvt1NmmS13arxLakuyX1Q0OZW0LXjsnaZdX21m47VktqW7W3JdHtogDLCYYqxo31nSWtbV8//eQlfi0xvWGDl3S29ybjcPSWvLf3yN4Lm+fchsy3fRhLFIeGWc+J9a9VVFsFuCXCrfraLrgIseHK7VyaPVt66SVvnSXJQxdUWB9kTMzb+WiJdWuLvVd20YG9RzYsvFWHH8reE7tw4dD+toS7Jb3tfAm9j9YuS9jbUPl20YaxCzNslANjCXw7Dnsfre+sH+1cO1rEskLqB7u6ol07byiB0C8NAAAKETE9HX2BwmTV46u2r3IT5D9v/Vmrd6zWb0m/uYvdt6rzvLLkuSXIq5StooQyCapUppIqla6Ufr9MJXeb0P2KpSu6VeilYrIZ2gxAYJAUz0aK46j+3LlaZX/d+0vfxESNa9iwQPYPAEBGfLlMR18ARePllzMniy2R3aePl5y0JOrevV6y0+betmruUBLbhp22KuuMbIahTp28ZKux60dtuG1LMk6d6iWobYhuS4pakac917atV+gZSvBaotQqxq3iN+T9973XWqV4VpW/hyZbs0q4/vxz1sNh28+1JLoN121Dy4fmuM6KJbFtqPWQSy6Rhg/3qtlD81yH2PDsdmGBXVdr/RZKzlqFecYLBHJiX0GsMt8qxW1f1vfWD+vWedXbLVp421nlvq2ztls1uyV0M7bTEu2WVM+N9a3txyqk7T2xKmxLbNt7ao9tiHgbHt+Sy3behIbgN5abDFXBt2nj5SlXrcr+Z9mFFHYBgg0pb2zYc5tHPb/svbIRDP71r/R1VuVvF2xkx/rfLnywCwuMzVceGoK+oBHLCqkfHn7YuzomP/+gAAA4CsT0dPQF/LQzead+2+ElydckrdGG3RsOWzbu2aj9KRmucs4nS4pXKFVB5UuVd5Pk7m2pCpnvl6qgcqXKuUO9ly5R2l3KlPTu52VdyeiSirIvcAB8QVI8C9/u3Km2VrKRwcKWLdXMJlcEAKAQ8OUyHX0BFB1Lbg8d6s2ZbcOTW1W2VRCHEr2hKXttuHMbTt3mo7bq36xGLLZq31BV7ymnSIsXZ37eEpBXX53++PvvvSG5rbLXhvXu29dLuFoFuyVJ7aO3JbtDw3pbgjk0XLhVM4cGc7L92FzZlkA2NlT67t3efq1y3T7W5/Q3B2uDXfdqVeVm3DivDVYJb8Oc2zDiliS2+aetr4xVx1vC2BLRNsS8DRmfMaEdGlTqyy+97YxVzduw3Xll+7G8n1XcGzue0NDjoTnKrT+ffz7z66xvbPhwuxjB5iu3JHBBsm+F9j5Zgtwqr0OV9FYZbv1jCXy7YCDUVmMJd7uYwl7zyiveuWQJ7ZEjvar4yy8/8rbYRQh2/tow71b5bxdF5MTO85tv9s4rq6Y/dEj+gkIsK6R+sCs9bIgDG3LippsKookAAOSImJ6OvkBxZyksqygPJcm37t2qbXu3afve7e6tu+z76zbD+j0HMgwPVgRKRJdwk+MlY0pmurWk/KHrMt66z2dYFx0VrZjoGMVExXj3o2LcxwV5P8r+i4oq1reHyuqig6y2K6xts7voIdzb6jebNsEuSDlaJMUPYYcZHZok0P6gV66cFrZqpWiu3gEAFCK+XKajL4CiZVXblhgMfdy1xKUlYy1paMlMSzYa+zZgidqMQ3EfyhKelhi1pKlVU2dkFdNWsW2Jd5tPevr09OdsiGsbqtyqohcu9IZUtwpemxM8K1bpa8loq1K2CnSrTrbksw2Lbfu1/Viy1iqcLbmdG5tL3BKzNhe4Vb2HktrWZlusatpYYtyG3bZkdMavB5aju/JKLxl9aJttaPKPP/YS99an+WHV+lapbxcNWBV0aB5vS9Tb0OF2wULVqoe/zt4re1+turwwhfrN+sfOlVCC2RLj9h7b/NwZRxaw98Te5xBro40ccLSsn0xO52bGvrG+s4p1u+ihsBDLCqEf7MSyf/T2C8Ou1GnZsqCaCQBAtojp6egLBNWBlAPavX+3du3fpV3Ju9Luu7fJuzLdt1tb9qXs076D+7T3wF7v9uDeTI8zrrMFwNGZduU0dT2+61HuhaR4lvosXaoJmzbpgyZNdK79ZQ0AgELGl8t09AXgP6u6tkptG047v+xbQ3bXk1rC3ZLDljS3ubMLUk4/Ny+vtWHjrbLcqtyL+uf7ue+jZe+pzWFuw+FnZHlLq1Tv1atgEt/hhlhWCP3w++9S9+7elTVbt+Y+LAAAAAWAmJ6OvgCOjKXWklOS3YS5De9+IPWAm4jP7Ta3bVOdVKWkpni3Tkr+7zt/3U/N/r5j/zlOvm7ttfl9zZHeZtXXh63LYrvC2ja7NGq4t7U4mNx7sjrW7njU+yEpDgBAMUAsS0dfAADCXXGOZc8++6weeeQRbdiwQU2bNtWYMWPUxiaEz8akSZN0zz33aPXq1apfv74eeughnZ3HMvtC6QebHyE0fAMAABEc04safQEAiJRYFl2krQIAAAAAAAVq4sSJuvnmmzVixAh99913blK8e/fu2rRpU5bbf/PNN+rTp48GDBighQsX6oILLnCXJUuWyDckxAEAAAAAhYikOAAAAAAAYezxxx/XwIED1b9/fzVq1EjPP/+8ypYtq5dtToMsPPXUU+rRo4duvfVWNWzYUA8++KBatGihZ555psjbDgAAAABAUSApDgAAAABAmNq/f78WLFigbt26pa2Ljo52H8+ePTvL19j6jNsbqyzPbnsAAAAAAMJdCb8bAAAAAAAAjsyWLVuUkpKixMTETOvt8fLly7N8jc07ntX2tj4rycnJ7pJxvjYAAAAAAMIJleIAAAAAACBbo0aNUnx8fNpy3HHH+d0kAAAAAADyhaQ4AAAAAABhqkqVKoqJidHGjRszrbfH1apVy/I1tj4/2w8fPlxJSUlpy9q1awvwCAAAAAAAKHwkxQEAAAAACFOlSpVSy5YtNW3atLR1qamp7uN27dpl+Rpbn3F7M3Xq1Gy3j42NVVxcXKYFAAAAAIBwwpziAAAAAACEsZtvvll9+/ZVq1at1KZNGz355JPas2eP+vfv7z5/5ZVX6thjj3WHQTdDhw5Vp06d9Nhjj6lnz56aMGGC5s+frxdffNHnIwEAAAAAoHCQFAcAAAAAIIz17t1bmzdv1r333qsNGzaoWbNmmjJlihITE93n16xZo+jo9IHi2rdvrzfeeEN333237rzzTtWvX1/vvfeemjRp4uNRAAAAAABQeEiKAwAAAAAQ5oYMGeIuWZkxY8Zh63r16uUuAAAAAABEAuYUBwAAAAAAAAAAAAAEVrGuFHccx73duXOn300BAOCIhGJYKKZFMuI6ACDcEdc9xHQAQLgjpqcjrgMAIiWuF+uk+K5du9zb4447zu+mAABw1DEtPj5ekYy4DgAIikiP68R0AEBQRHpMN8R1AECkxPUopxhfDpeamqo//vhDFSpUUFRUlIJ45YJ92Fi7dq3i4uIUKThujjsScNwcd4iFWQvGNWrUUHR0ZM9aUtBxPVLPt0PRDx76wUM/eOgHD/1Q8H1BXPcQ0wsH/eChH9LRFx76wUM/eIjpBY+4XjjoBw/94KEfPPSDh37wL64X60pxa3jNmjUVdPZGR+KJz3FHFo47snDcmUX6VeeFHdcj9Xw7FP3goR889IOHfvDQDwXbF8R1Ynphox889EM6+sJDP3joBw8xveAQ1wsX/eChHzz0g4d+8NAPRR/XI/syOAAAAAAAAAAAAABAoJEUBwAAAAAAAAAAAAAEFklxH8XGxmrEiBHubSThuDnuSMBxc9wofPS7h37w0A8e+sFDP3joh3T0RfHG++OhHzz0Qzr6wkM/eOgHD/1Q/PEeeegHD/3goR889IOHfvCvL6Icm30cAAAAAAAAAAAAAIAAolIcAAAAAAAAAAAAABBYJMUBAAAAAAAAAAAAAIFFUhwAAAAAAAAAAAAAEFgkxYuRkSNHqn379ipbtqwqVqyooHr22WdVp04dlS5dWm3bttW3336rIPvyyy917rnnqkaNGoqKitJ7772nSDBq1Ci1bt1aFSpU0DHHHKMLLrhAK1asUNA999xzOuWUUxQXF+cu7dq106effqpIMnr0aPdcv/HGGxVk9913n3ucGZeTTjrJ72ZFjEiLJbmdb/v27dPgwYNVuXJllS9fXhdffLE2btyooMdQx3F07733qnr16ipTpoy6deumn3/+OdM227Zt0+WXX+7+TrbPVwMGDNDu3bsVpH7o16/fYedHjx49AtcPeflskZd/C2vWrFHPnj3dz9y2n1tvvVUHDx5UkPqhc+fOh50T11xzTaD6IbfPXJFwLgQJcZ24bojrHuK6Iup3OXHdQ1wPDmI6Md0Q0z3EdEXU73FienjEdJLixcj+/fvVq1cvXXvttQqqiRMn6uabb9aIESP03XffqWnTpurevbs2bdqkoNqzZ497nPahMJLMnDnT/eU2Z84cTZ06VQcOHNCZZ57p9keQ1axZ000KL1iwQPPnz1fXrl11/vnn68cff1QkmDdvnl544QU38EWCxo0ba/369WnLrFmz/G5SRIjEWJLb+XbTTTfpww8/1KRJk9zfv3/88YcuuugiBT2GPvzww3r66af1/PPPa+7cuSpXrpx7LtgH7BD7cmm/gy0WffTRR+6X1kGDBilonyXsi3XG8+PNN9/M9HwQ+iEvny1y+7eQkpLifrGyz93ffPONxo8fr3Hjxrl/sAnaZ6yBAwdmOifs30uQ+iG3z1yRcC4EBXGduB5CXE9HXFfE/C4nrnuI68FATCemhxDT0xHTFTG/x4npYRLTHRQ7r7zyihMfH+8EUZs2bZzBgwenPU5JSXFq1KjhjBo1yokE9k9u8uTJTiTatGmTe/wzZ850Ik1CQoLzn//8xwm6Xbt2OfXr13emTp3qdOrUyRk6dKgTZCNGjHCaNm3qdzMiUiTGkpzOtx07djglS5Z0Jk2alLZu2bJl7u/c2bNnO0GNoampqU61atWcRx55JFNfxMbGOm+++ab7eOnSpe7r5s2bl7bNp59+6kRFRTm///67E5TPEn379nXOP//8bF8TxH7I6rNFXv4tfPLJJ050dLSzYcOGtG2ee+45Jy4uzklOTnaC8hkrtzgcxH7I+JkrUs+FcEVcz4y4TlwnrhPXiese4nr4IaZnRkwnphPTienE9OIX06kUR5GxKzvs6hAbLiUkOjrafTx79mxf24bCl5SU5N5WqlRJkcKuapowYYJ7NZgNExJ0diWcXcWV8d940NnQTzZEUt26dd0rO21oFxSuSI4l2Z1v1h929WnGPrHh2mrVqhXoPlm1apU2bNiQ6bjj4+PdIfpCx223NvxYq1at0rax7e2csavVg2TGjBnukFINGjRwRx3aunVr2nNB7YdDP1vk5d+C3Z588slKTExM28YqFnbu3Bm2o7pk9xnr9ddfV5UqVdSkSRMNHz5cf/75Z9pzQeuHQz9zReq5EI6I68T1EOJ6ZsR14jpxnbgebojpxPQQYnpmxHRiOjF9QrGK6SWOeg9AHm3ZssX9R5DxZDb2ePny5b61C4UvNTXVnV+6Q4cO7i/7oPvhhx/cX/I2JJDNizF58mQ1atRIQWbBzYbGsuHTI4V9mLehW+xDrQ11c//99+v000/XkiVL3LljUDgiNZbkdL7Zl81SpUq5X6QO7RN7LqhCx5bVuRB6zm7ty2dGJUqUcL+QBKlvbDg2G2rq+OOP1y+//KI777xTZ511lvtFIiYmJpD9kNVni7z8W7DbrM6Z0HNB+Yz197//XbVr13b/OPf999/r9ttvd+cye/fddwPVD9l95lq0aFHEnQvhirhOXA8hrqcjrhPXievE9XBETCemhxDT0xHTienE9H3FLqaTFC9kd9xxhx566KEct1m2bJl7NQQQ5Api+zAYKfMt2wdh+wVvV4O9/fbb6tu3rzs/RlAT42vXrtXQoUPduVJKly6tSGEfYkNsDnX7ImQfat566y0NGDDA17Yhss63MmXK+No2+O+yyy5Lu29X09o5csIJJ7hXpJ9xxhkKokj7bJHffsg4B52dE9WrV3fPBftDjJ0bQf/MBRR3xHXkhLgeuYjrxHWEH2I6ckJMj1zE9AbFNqYzfHohGzZsmJv0zmmxoVUigQ0JYVdAbdy4MdN6e1ytWjXf2oXCNWTIEH300UeaPn26atasqUhgVzvVq1dPLVu21KhRo9S0aVM99dRTCiob9mTTpk1q0aKFezWjLRbknn76afe+XSkcCewKtxNPPFErV670uymBRiw5/Hyz47ah6nbs2BFRfRI6tpzOBbu1308ZHTx4UNu2bQt039hnS/u3Evp9FLR+yO6zRV7+LdhtVudM6LmgfsayP86ZjOdEEPohu89ckXYuhDPiuoe4TlzPCXE9Mn6XE9eJ6+GOmO4hphPTc0JMj4zf48R0FeuYTlK8kFWtWtWtAs9psRMkEthx2j+CadOmZRpGwh5HwnzLkcZxHDcA2NAYX3zxhTtMTKSy8zw5OVlBZVez2ZAodvVXaLG5cGweJbtvX4oiwe7du92r+uwKPxQeYsnh55v1R8mSJTP1iQ29ZPOYBblPLK7Yh+GMx23zC9m8W6Hjtlv7oG0X74RYTLJzJvTFI4jWrVvnzlMW+n0UlH7I7bNFXv4t2K3FrIx/eLCRTuLi4sJmRJcj+Yxl8dhkPCfCvR9y+swVKedCEBDXPcR14npOiOvB/l1OXM8ecT28ENM9xHRiek6I6cH+PU5MD5OY7qDY+O2335yFCxc6999/v1O+fHn3vi27du1ygmLChAlObGysM27cOGfp0qXOoEGDnIoVKzobNmxwgsrev9B7af/kHn/8cfe+vd9Bdu211zrx8fHOjBkznPXr16ctf/75pxNkd9xxhzNz5kxn1apVzvfff+8+joqKcj777DMnknTq1MkZOnSoE2TDhg1zz297r7/++munW7duTpUqVZxNmzb53bTAi8RYktv5ds011zi1atVyvvjiC2f+/PlOu3bt3CXoMXT06NHue//++++7v3PPP/985/jjj3f27t2bto8ePXo4zZs3d+bOnevMmjXLqV+/vtOnTx8nKP1gz91yyy3O7Nmz3fPj888/d1q0aOEe5759+wLVD3n5bJHbv4WDBw86TZo0cc4880xn0aJFzpQpU5yqVas6w4cPd4LSDytXrnQeeOAB9/jtnLB/H3Xr1nU6duwYqH7I7TNXJJwLQUFcJ64T14nrxHXiOnE9GIjpxHRiOjGdmE5Mv6OYx3SS4sVI37593V+ehy7Tp093gmTMmDHuSV+qVCmnTZs2zpw5c5wgs/cvq/fV3u8gy+qYbXnllVecILvqqquc2rVru+e3/bI+44wzIi4hHilJ8d69ezvVq1d33+tjjz3WfWwfblA0Ii2W5Ha+2RfL6667zklISHDKli3rXHjhhe4H76DH0NTUVOeee+5xEhMT3T++2O/cFStWZNrH1q1b3S+UdsFhXFyc079//7C74DCnfrAvV/ZFwWJOyZIl3Rg0cODAw/7wFIR+yMtni7z8W1i9erVz1llnOWXKlHH/YGV/yDpw4IATlH5Ys2aN+6W6UqVK7r+LevXqObfeequTlJQUqH7I7TNXJJwLQUJcJ64b4jpxnbhOXCeuhz9iOjHdENOJ6cR0YnqpYhrTo+x/R19vDgAAAAAAAAAAAABA8cOc4gAAAAAAAAAAAACAwCIpDgAAAAAAAAAAAAAILJLiAAAAAAAAAAAAAIDAIikOAAAAAAAAAAAAAAgskuIAAAAAAAAAAAAAgMAiKQ4AAAAAAAAAAAAACCyS4gAAAAAAAAAAAACAwCIpDgAAAAAAAAAAAAAILJLiAAAAQASLiorSe++953czAABAASCuAwAQHMR1oGCRFAcAAAB80q9fP/dL7qFLjx49/G4aAADIJ+I6AADBQVwHgqeE3w0AAAAAIpl9oX7llVcyrYuNjfWtPQAA4MgR1wEACA7iOhAsVIoDAAAAPrIv1NWqVcu0JCQkuM/ZVejPPfeczjrrLJUpU0Z169bV22+/nen1P/zwg7p27eo+X7lyZQ0aNEi7d+/OtM3LL7+sxo0buz+revXqGjJkSKbnt2zZogsvvFBly5ZV/fr19cEHHxTBkQMAEDzEdQAAgoO4DgQLSXEAAACgGLvnnnt08cUXa/Hixbr88st12WWXadmyZe5ze/bsUffu3d0v5fPmzdOkSZP0+eefZ/oSbV/SBw8e7H75ti/k9gW6Xr16mX7G/fffr0svvVTff/+9zj77bPfnbNu2rciPFQCAoCOuAwAQHMR1IMw4AAAAAHzRt29fJyYmxilXrlymZeTIke7z9nH9mmuuyfSatm3bOtdee617/8UXX3QSEhKc3bt3pz3/8ccfO9HR0c6GDRvcxzVq1HDuuuuubNtgP+Puu+9Oe2z7snWffvppgR8vAABBRlwHACA4iOtA8DCnOAAAAOCjLl26uFeHZ1SpUqW0++3atcv0nD1etGiRe9+uQG/atKnKlSuX9nyHDh2UmpqqFStWuMO5/fHHHzrjjDNybMMpp5ySdt/2FRcXp02bNh31sQEAEGmI6wAABAdxHQgWkuIAAACAj+xL7aHDoxUUm7csL0qWLJnpsX05ty/qAAAgf4jrAAAEB3EdCBbmFAcAAACKsTlz5hz2uGHDhu59u7W5y2yuspCvv/5a0dHRatCggSpUqKA6depo2rRpRd5uAABwOOI6AADBQVwHwguV4gAAAICPkpOTtWHDhkzrSpQooSpVqrj3J02apFatWum0007T66+/rm+//VYvvfSS+9zll1+uESNGqG/fvrrvvvu0efNmXX/99frHP/6hxMREdxtbf8011+iYY47RWWedpV27drlfxG07AABQsIjrAAAEB3EdCBaS4gAAAICPpkyZourVq2daZ1eNL1++3L1///33a8KECbruuuvc7d588001atTIfa5s2bL63//+p6FDh6p169bu44svvliPP/542r7sC/i+ffv0xBNP6JZbbnG/vF9yySVFfJQAAEQG4joAAMFBXAeCJcpxHMfvRgAAAAA4nM0VNnnyZF1wwQV+NwUAABwl4joAAMFBXAfCD3OKAwAAAAAAAAAAAAACi6Q4AAAAAAAAAAAAACCwGD4dAAAAAAAAAAAAABBYVIoDAAAAAAAAAAAAAAKLpDgAAAAAAAAAAAAAILBIigMAAAAAAAAAAAAAAoukOAAAAAAAAAAAAAAgsEiKAwAAAAAAAAAAAAACi6Q4AAAAAAAAAAAAACCwSIoDAAAAAAAAAAAAAAKLpDgAAAAAAAAAAAAAILBIigMAAAAAAAAAAAAAFFT/D+2sf8MdQkyDAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 5
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 拓展链接\n",
    "+ 偏导数 - https://zh.wikipedia.org/wiki/%E5%81%8F%E5%AF%BC%E6%95%B0"
   ]
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 凸函数\n",
    "\n",
    "### 什么是凸函数（Convex Function）？\n",
    "\n",
    "在数学中，**凸函数**是定义在某个区间上的实值函数，它满足这样一个条件：\n",
    "\n",
    "> **在任意两点之间，连线都在图像的上方或与图像重合。**\n",
    "\n",
    "换句话说，一个函数 $ f(x) $ 是凸的，当对于区间上的任意两个点 $ x_1, x_2 $，以及 $ \\lambda \\in [0,1] $，都有：\n",
    "\n",
    "$$\n",
    "f(\\lambda x_1 + (1 - \\lambda) x_2) \\leq \\lambda f(x_1) + (1 - \\lambda) f(x_2)\n",
    "$$\n",
    "\n",
    "这称为**凸性不等式**。\n",
    "\n",
    "---\n",
    "\n",
    "### 图像理解\n",
    "\n",
    "- 函数图像“朝上凹”或“开口向上”就是凸函数（比如 $ f(x) = x^2 $）\n",
    "- 如果图像“朝下凸”或“开口向下”，那是**凹函数**（concave function），即凸函数的相反概念。\n",
    "\n",
    "---\n",
    "\n",
    "### 凸函数的性质\n",
    "\n",
    "1. **局部最小即全局最小**：在凸函数中，如果某点是局部最小点，那么它就是全局最小点。\n",
    "2. **导数性质**：\n",
    "   - 若 $ f $ 可导，则函数是凸的 ↔ $ f' $ 单调不减。\n",
    "   - 若 $ f $ 二阶可导，则函数是凸的 ↔ $ f''(x) \\geq 0 $。\n",
    "3. **凸函数 + 凸函数 = 凸函数**。\n",
    "4. **凸函数的非负加权和也是凸函数**。"
   ]
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 标准方程法实现线性回归\n",
    "\n",
    "在机器学习中，**标准方程法（Normal Equation）** 是一种用于直接求解线性回归模型参数（权重）的解析方法。它通过数学推导一次性计算出最优参数，*避免了迭代优化过程（如梯度下降）*。以下是关键点总结：\n",
    "\n",
    "---\n",
    "\n",
    "### **1. 核心思想**\n",
    "\n",
    "• **目标**：最小化线性回归的损失函数（均方误差，MSE）。\n",
    "\n",
    "• **方法**：对损失函数关于参数向量求导，并令导数为零，直接解出最优参数。\n",
    "\n",
    "---\n",
    "\n",
    "### **2. 公式**\n",
    "对于线性模型 $ y = X\\theta + \\epsilon $（$X$ 为设计矩阵，$\\theta$ 为参数向量），最优参数 $\\theta$ 的解为：\n",
    "$$\n",
    "\\theta = (X^T X)^{-1} X^T y\n",
    "$$\n",
    "• **前提**：矩阵 $X^T X$ 必须可逆（即 $X$ 列满秩）。\n",
    "\n",
    "---\n",
    "\n",
    "### **3. 优缺点**\n",
    "+ **优点**：\n",
    "\n",
    "    + **无需学习率或迭代**：直接得到解析解。\n",
    "\n",
    "    + **计算高效**：当特征维度 $n$ 较小时（如 $n < 10^4$），计算速度快。\n",
    "\n",
    "+ **缺点**：\n",
    "    + **计算复杂度高**：矩阵求逆的复杂度为 $O(n^3)$，特征多时计算昂贵。\n",
    "\n",
    "    + **需矩阵可逆**：若 $X^T X$ 奇异（如特征共线），需使用伪逆或正则化（如岭回归）。\n",
    "\n",
    "---\n",
    "\n",
    "### **4. 与梯度下降对比**\n",
    "| **标准方程法** | **梯度下降**    |\n",
    "|-----------|-------------|\n",
    "| 直接解析解     | 迭代逼近最优解     |\n",
    "| 无需调学习率    | 需选择学习率和迭代次数 |\n",
    "| 适合小规模数据   | 适合大规模或高维数据  |\n",
    "| 一次计算完成    | 多次迭代更新参数    |\n",
    "\n",
    "举例说明标准方程法如何一步求出 MSE 的极小值\n",
    "\n",
    "### **5. 举例说明**\n",
    "\n",
    "太好了！那我们就更通俗一点，每一步都详细写出矩阵是怎么展开的，让你能看清楚每个元素是怎么来的。不需要你完全懂线性代数，咱们一点点来看。\n",
    "\n",
    "我们还是用一个小例子来讲解：\n",
    "假设我们有 3 个样本，每个样本只有 1 个特征（比如房子的面积），目标是预测房价：\n",
    "\n",
    "| 样本编号 | 特征 x（面积） | 目标 y（房价） |\n",
    "|------|----------|----------|\n",
    "| 1    | 1        | 2        |\n",
    "| 2    | 2        | 3        |\n",
    "| 3    | 3        | 4        |\n",
    "\n",
    "---\n",
    "\n",
    "## 🔢 第一步：构造矩阵 X 和向量 y\n",
    "\n",
    "我们加上一列全是 1 的偏置项（为了学到截距 $ \\theta_0 $）：\n",
    "\n",
    "$$\n",
    "X =\n",
    "\\begin{bmatrix}\n",
    "1 & 1 \\\\\n",
    "1 & 2 \\\\\n",
    "1 & 3\n",
    "\\end{bmatrix}\n",
    "\\quad\n",
    "y =\n",
    "\\begin{bmatrix}\n",
    "2 \\\\\n",
    "3 \\\\\n",
    "4\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "注意：\n",
    "- 每一行代表一个样本\n",
    "- 第 1 列是 1（偏置项）\n",
    "- 第 2 列是特征值 x\n",
    "- y 是每个样本对应的输出值\n",
    "\n",
    "---\n",
    "\n",
    "## ✍️ 第二步：计算 $ X^T X $\n",
    "\n",
    "$ X^T $ 是 X 的转置（行列互换）：\n",
    "\n",
    "$$\n",
    "X^T =\n",
    "\\begin{bmatrix}\n",
    "1 & 1 & 1 \\\\\n",
    "1 & 2 & 3\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "现在我们计算：\n",
    "\n",
    "$$\n",
    "X^T X =\n",
    "\\begin{bmatrix}\n",
    "1 & 1 & 1 \\\\\n",
    "1 & 2 & 3\n",
    "\\end{bmatrix}\n",
    "\\cdot\n",
    "\\begin{bmatrix}\n",
    "1 & 1 \\\\\n",
    "1 & 2 \\\\\n",
    "1 & 3\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "我们来一项一项地乘出来（2×3 乘 3×2，结果是 2×2）：\n",
    "\n",
    "- 第 1 行第 1 列：\n",
    "  $$\n",
    "  1×1 + 1×1 + 1×1 = 3\n",
    "  $$\n",
    "- 第 1 行第 2 列：\n",
    "  $$\n",
    "  1×1 + 1×2 + 1×3 = 6\n",
    "  $$\n",
    "- 第 2 行第 1 列：\n",
    "  $$\n",
    "  1×1 + 2×1 + 3×1 = 6\n",
    "  $$\n",
    "- 第 2 行第 2 列：\n",
    "  $$\n",
    "  1×1 + 2×2 + 3×3 = 14\n",
    "  $$\n",
    "\n",
    "结果：\n",
    "\n",
    "$$\n",
    "X^T X =\n",
    "\\begin{bmatrix}\n",
    "3 & 6 \\\\\n",
    "6 & 14\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "---\n",
    "\n",
    "## ✍️ 第三步：计算 $ X^T y $\n",
    "\n",
    "我们还是用刚才的 $ X^T $，乘上 y：\n",
    "\n",
    "$$\n",
    "X^T =\n",
    "\\begin{bmatrix}\n",
    "1 & 1 & 1 \\\\\n",
    "1 & 2 & 3\n",
    "\\end{bmatrix}\n",
    "\\quad\n",
    "y =\n",
    "\\begin{bmatrix}\n",
    "2 \\\\\n",
    "3 \\\\\n",
    "4\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "相乘（2×3 乘 3×1，结果是 2×1 向量）：\n",
    "\n",
    "- 第 1 行：\n",
    "  $$\n",
    "  1×2 + 1×3 + 1×4 = 9\n",
    "  $$\n",
    "- 第 2 行：\n",
    "  $$\n",
    "  1×2 + 2×3 + 3×4 = 20\n",
    "  $$\n",
    "\n",
    "结果：\n",
    "\n",
    "$$\n",
    "X^T y =\n",
    "\\begin{bmatrix}\n",
    "9 \\\\\n",
    "20\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "---\n",
    "\n",
    "## ✍️ 第四步：计算 $ (X^T X)^{-1} $\n",
    "\n",
    "我们现在有：\n",
    "\n",
    "$$\n",
    "X^T X =\n",
    "\\begin{bmatrix}\n",
    "3 & 6 \\\\\n",
    "6 & 14\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "我们要求它的逆矩阵 $ (X^T X)^{-1} $\n",
    "\n",
    "2×2 矩阵的逆矩阵公式是：\n",
    "\n",
    "$$\n",
    "\\begin{bmatrix}\n",
    "a & b \\\\\n",
    "c & d\n",
    "\\end{bmatrix}^{-1}\n",
    "=\n",
    "\\frac{1}{ad - bc}\n",
    "\\begin{bmatrix}\n",
    "d & -b \\\\\n",
    "-c & a\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "带入：\n",
    "\n",
    "- $ a = 3, b = 6, c = 6, d = 14 $\n",
    "- 行列式：$ ad - bc = 3×14 - 6×6 = 42 - 36 = 6 $\n",
    "\n",
    "所以：\n",
    "\n",
    "$$\n",
    "(X^T X)^{-1} =\n",
    "\\frac{1}{6}\n",
    "\\begin{bmatrix}\n",
    "14 & -6 \\\\\n",
    "-6 & 3\n",
    "\\end{bmatrix}\n",
    "=\n",
    "\\begin{bmatrix}\n",
    "14/6 & -1 \\\\\n",
    "-1 & 0.5\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "---\n",
    "\n",
    "## ✍️ 第五步：代入标准方程公式求 $ \\theta $\n",
    "\n",
    "公式是：\n",
    "\n",
    "$$\n",
    "\\theta = (X^T X)^{-1} X^T y\n",
    "$$\n",
    "\n",
    "我们代入：\n",
    "\n",
    "$$\n",
    "\\theta =\n",
    "\\begin{bmatrix}\n",
    "14/6 & -1 \\\\\n",
    "-1 & 0.5\n",
    "\\end{bmatrix}\n",
    "\\cdot\n",
    "\\begin{bmatrix}\n",
    "9 \\\\\n",
    "20\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "手动计算：\n",
    "\n",
    "- 第 1 行：\n",
    "  $$\n",
    "  \\frac{14}{6}×9 + (-1)×20 = 21 - 20 = 1\n",
    "  $$\n",
    "- 第 2 行：\n",
    "  $$\n",
    "  -1×9 + 0.5×20 = -9 + 10 = 1\n",
    "  $$\n",
    "\n",
    "结果：\n",
    "\n",
    "$$\n",
    "\\theta =\n",
    "\\begin{bmatrix}\n",
    "1 \\\\\n",
    "1\n",
    "\\end{bmatrix}\n",
    "$$\n",
    "\n",
    "---\n",
    "\n",
    "## ✅ 最终模型\n",
    "\n",
    "我们找到的回归模型是：\n",
    "\n",
    "$$\n",
    "\\hat{y} = 1 + 1 \\cdot x\n",
    "$$\n",
    "\n",
    "也就是说：\n",
    "\n",
    "- 当 x = 1，预测 y = 2\n",
    "- 当 x = 2，预测 y = 3\n",
    "- 当 x = 3，预测 y = 4\n",
    "\n",
    "完美拟合原始数据！"
   ]
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-17T16:49:57.303823Z",
     "start_time": "2025-04-17T16:49:57.199237Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 标准化数据\n",
    "x_mean, x_std = np.mean(x_data), np.std(x_data)\n",
    "y_mean, y_std = np.mean(y_data), np.std(y_data)\n",
    "x_norm = (x_data - x_mean) / x_std\n",
    "y_norm = (y_data - y_mean) / y_std\n",
    "\n",
    "# 添加偏置项（截距），构建X矩阵\n",
    "X = np.c_[np.ones(len(x_norm)), x_norm]  # shape: (n_samples, 2)\n",
    "y = y_norm.reshape(-1, 1)                # shape: (n_samples, 1)\n",
    "\n",
    "# 标准方程解：theta = (X^T X)^(-1) X^T y\n",
    "theta = np.linalg.inv(X.T @ X) @ X.T @ y\n",
    "\n",
    "# 提取参数\n",
    "b, k = theta[0, 0], theta[1, 0]\n",
    "\n",
    "# 绘制拟合图像\n",
    "plt.plot(x_norm, y_norm, 'y.', label='Data')\n",
    "plt.plot(x_norm, k * x_norm + b, 'c', label='Fit')\n",
    "plt.title('Final Fit (Normal Equation)')\n",
    "plt.legend()\n",
    "plt.show()\n"
   ],
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 5
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
